40 #include "ams_types.h"
43 #define AS3993_REG_STATUSCTRL 0X00
44 #define AS3993_REG_PROTOCOLCTRL 0X01
45 #define AS3993_REG_TXOPTIONS 0X02
46 #define AS3993_REG_RXOPTIONS 0X03
47 #define AS3993_REG_TRCALHIGH 0X04
48 #define AS3993_REG_TRCALLOW 0X05
49 #define AS3993_REG_AUTOACKTIMER 0X06
50 #define AS3993_REG_RXNORESPONSEWAITTIME 0X07
51 #define AS3993_REG_RXWAITTIME 0X08
52 #define AS3993_REG_RXFILTER 0X09
53 #define AS3993_REG_RXMIXERGAIN 0X0A
54 #define AS3993_REG_REGULATORCONTROL 0X0B
55 #define AS3993_REG_RFOUTPUTCONTROL 0X0C
56 #define AS3993_REG_MISC1 0X0D
57 #define AS3993_REG_MISC2 0X0E
58 #define AS3993_REG_MEASUREMENTCONTROL 0X10
59 #define AS3993_REG_VCOCONTROL 0X11
60 #define AS3993_REG_CPCONTROL 0X12
61 #define AS3993_REG_MODULATORCONTROL1 0X13
62 #define AS3993_REG_MODULATORCONTROL2 0X14
63 #define AS3993_REG_MODULATORCONTROL3 0X15
64 #define AS3993_REG_MODULATORCONTROL4 0X16
65 #define AS3993_REG_PLLMAIN1 0X17
66 #define AS3993_REG_PLLMAIN2 0X18
67 #define AS3993_REG_PLLMAIN3 0X19
68 #define AS3993_REG_PLLAUX1 0X1A
69 #define AS3993_REG_PLLAUX2 0X1B
70 #define AS3993_REG_PLLAUX3 0X1C
71 #define AS3993_REG_ICD 0X1D
72 #define AS3993_REG_MIXOPTS 0X22
73 #define AS3993_REG_TEST1 0X23
74 #define AS3993_REG_TEST2 0X24
75 #define AS3993_REG_TEST3 0X25
76 #define AS3993_REG_TEST4 0X26
77 #define AS3993_REG_TXRESHAPE 0X27
78 #define AS3993_REG_STATUSPAGE 0X29
79 #define AS3993_REG_AGCANDSTATUS 0X2A
80 #define AS3993_REG_RSSILEVELS 0X2B
81 #define AS3993_REG_AGL 0X2C
82 #define AS3993_REG_ADC 0X2D
83 #define AS3993_REG_COMMANDSTATUS 0X2E
84 #define AS3993_REG_DEVICEVERSION 0X33
85 #define AS3993_REG_IRQMASK1 0X35
86 #define AS3993_REG_IRQMASK2 0X36
87 #define AS3993_REG_IRQSTATUS1 0X37
88 #define AS3993_REG_IRQSTATUS2 0X38
89 #define AS3993_REG_FIFOSTATUS 0X39
90 #define AS3993_REG_RXLENGTHUP 0X3A
91 #define AS3993_REG_RXLENGTHLOW 0X3B
92 #define AS3993_REG_TXSETTING 0X3C
93 #define AS3993_REG_TXLENGTHUP 0X3D
94 #define AS3993_REG_TXLENGTHLOW 0X3E
95 #define AS3993_REG_FIFO 0X3F
98 #define AS3993_CMD_IDLE 0x80
100 #define AS3993_CMD_DIRECT_MODE 0x81
102 #define AS3993_CMD_SOFT_INIT 0x83
103 #define AS3993_CMD_HOP_TO_MAIN_FREQUENCY 0x84
104 #define AS3993_CMD_HOP_TO_AUX_FREQUENCY 0x85
105 #define AS3993_CMD_TRIGGERADCCON 0x87
106 #define AS3993_CMD_TRIG_RX_FILTER_CAL 0x88
107 #define AS3993_CMD_INC_RX_FILTER_CAL 0x89
108 #define AS3993_CMD_DEC_RX_FILTER_CAL 0x8A
109 #define AS3993_CMD_TRANSMCRC 0x90
110 #define AS3993_CMD_TRANSMCRCEHEAD 0x91
112 #define AS3993_CMD_TRANSMNOCRC 0x92
114 #define AS3993_CMD_DELAY_TRANSMIT_CRC 0x93
115 #define AS3993_CMD_DELAY_TRANSMIT_NO_CRC 0x94
116 #define AS3993_CMD_CLOSE_SLOT_SEQUENCE 0x95
117 #define AS3993_CMD_BLOCKRX 0x96
118 #define AS3993_CMD_ENABLERX 0x97
119 #define AS3993_CMD_QUERY 0x98
121 #define AS3993_CMD_QUERYREP 0x99
122 #define AS3993_CMD_QUERYADJUSTUP 0x9A
123 #define AS3993_CMD_QUERYADJUSTNIC 0x9B
124 #define AS3993_CMD_QUERYADJUSTDOWN 0x9C
126 #define AS3993_CMD_ACK 0x9D
127 #define AS3993_CMD_NAK 0x9E
128 #define AS3993_CMD_REQRN 0x9F
129 #define AS3993_CMD_SUPPLY_AUTO_LEVEL 0xA2
130 #define AS3993_CMD_SUPPLY_MANUAL_LEVEL 0xA3
131 #define AS3993_CMD_VCO_AUTO_RANGE 0xA4
132 #define AS3993_CMD_VCO_MANUAL_RANGE 0xA5
133 #define AS3993_CMD_AGL_ON 0xA6
134 #define AS3993_CMD_AGL_OFF 0xA7
135 #define AS3993_CMD_STORE_RSSI 0xA8
136 #define AS3993_CMD_CLEAR_RSSI 0xA9
137 #define AS3993_CMD_ANTI_COLL_ON 0xAA
138 #define AS3993_CMD_ANTI_COLL_OFF 0xAB
142 #define AS3993_IRQ1_NORESP 0x01
144 #define AS3993_IRQ1_AUTOACK 0x02
146 #define AS3993_IRQ1_HEADER 0x08
148 #define AS3993_IRQ1_RXERR 0x10
150 #define AS3993_IRQ1_FIFO 0x20
152 #define AS3993_IRQ1_RX 0x40
154 #define AS3993_IRQ1_TX 0x80
157 #define AS3993_IRQ2_PREAMBLE 0x01
159 #define AS3993_IRQ2_RXCOUNT 0x02
161 #define AS3993_IRQ2_CRCERROR 0x04
163 #define AS3993_IRQ2_END_CMD 0x40
165 #define AS3993_IRQ2_END_ANA 0x80
167 #define AS3993_IRQ1_MASK_ALL 0xfb
168 #define AS3993_IRQ2_MASK_ALL 0xc7
172 #define AS3993_FIFOSTAT_OVERFLOW 0x20
174 #define RESP_NORESINTERRUPT AS3993_IRQ1_NORESP
175 #define RESP_AUTOACK AS3993_IRQ1_AUTOACK
176 #define RESP_HEADERBIT AS3993_IRQ1_HEADER
177 #define RESP_RXERR AS3993_IRQ1_RXERR
178 #define RESP_FIFO AS3993_IRQ1_FIFO
179 #define RESP_RXIRQ AS3993_IRQ1_RX
180 #define RESP_TXIRQ AS3993_IRQ1_TX
181 #define RESP_PREAMBLEERROR (AS3993_IRQ2_PREAMBLE << 8)
182 #define RESP_RXCOUNTERROR (AS3993_IRQ2_RXCOUNT << 8)
183 #define RESP_CRCERROR (AS3993_IRQ2_CRCERROR << 8)
184 #define RESP_END_CMD (AS3993_IRQ2_END_CMD << 8)
185 #define RESP_END_ANA (AS3993_IRQ2_END_ANA << 8)
187 #if RUN_ON_AS3980 //as3980 produces irq_err2 (without irq_err) if new epc is read 500ms after last one.
188 #define RESP_RXDONE_OR_ERROR (RESP_RXIRQ | RESP_AUTOACK | RESP_RXERR | RESP_NORESINTERRUPT | RESP_RXCOUNTERROR)
190 #define RESP_RXDONE_OR_ERROR (RESP_RXIRQ | RESP_AUTOACK | RESP_RXERR | RESP_NORESINTERRUPT)
193 #define RESP_ANY (AS3993_IRQ1_MASK_ALL | (AS3993_IRQ2_MASK_ALL << 8))
195 #define RSSI_MODE_REALTIME 0x00
196 #define RSSI_MODE_PILOT 0x04
197 #define RSSI_MODE_2NDBYTE 0x06
198 #define RSSI_MODE_PEAK 0x08
200 #define AS3993_NOM_SENSITIVITY 68
207 #define AS3993_RSSI_FREQUENCY_OFFSET 50
211 #define WAITFORRESPONSEDELAY 10
213 #define WAITFORRESPONSETIMEOUT 50000
215 #define WAITFORRESPONSECOUNT WAITFORRESPONSETIMEOUT/WAITFORRESPONSEDELAY
219 extern u32 as3993CurrentBaseFreq;
276 u8 address, u8 *buf, u8 buf_len);
291 #define as3993GetResponse() as3993Response
292 #define as3993ClrResponseMask(mask) as3993Response&=~(mask)
293 #define as3993ClrResponse() as3993Response=0
386 extern u8 as3993ChipVersion;
void as3993ExitDirectMode()
Leave the direct mode.
void as3993EnterPowerStandbyMode()
Enter the standby power down mode: EN is high, stby is high and rf_on bit is low. ...
void as3993EnterPowerNormalMode()
Enter the normal power mode: EN is high, stby and rf_on bits are low.
void as3993WaitForResponse(u16 waitMask)
This file provides declarations for global helper functions.
void as3993ContinuousWrite(u8 address, u8 *buf, s8 len)
void as3993WaitForResponseTimed(u16 waitMask, u16 counter)
void as3993SingleWrite(u8 address, u8 value)
void as3993FifoRead(s8 len, u8 *readbuf)
void as3993EnterPowerNormalRfMode()
Enter the normal power mode with rf on. EN is high, stby bit is low and rf_on bit is high...
Configuration file for all AS99x firmware.
void as3993WaitForResponseFAST(u16 waitMask)
void as3993SingleCommand(u8 command)
void as3993CommandContinuousAddress(u8 *command, u8 com_len, u8 address, u8 *buf, u8 buf_len)
u8 as3993SingleRead(u8 address)
void as3993EnterDirectMode()
Enter the direct mode.
void as3993WaitForStartup(void)
after EN goes high the IRQ register has to be read after osc_ok goes high.
void as3993ExitPowerStandbyMode()
Exit the standby power down mode.
void as3993ExitPowerNormalMode()
Exit the normal power mode.
void as3993EnterPowerDownMode()
Enter the power down mode by setting EN pin to low, saving registers beforehand.
void as3993ContinuousRead(u8 address, s8 len, u8 *readbuf)
volatile u16 as3993Response
void as3993ExitPowerDownMode()
Exit the power down mode by setting EN pin to high, restoring registers afterwards.
void as3993ExitPowerNormalRfMode()
Exit the normal power mode with rf on.