📄 spi.lst
字号:
146 1 for(i=0;i<bytes;i++)
147 1 pBuf[i] = SPI_RW(0); // Perform SPI_RW to read byte from nRF24L01
148 1
149 1 CSN = 1; // Set CSN high again
150 1
151 1 return(status); // return nRF24L01 status byte
152 1 }
153 //***********************************************
154 //将*pBuf的bytes内容写到reg指定的寄存器
155 /**************************************************/
156 UCHAR SPI_Write_Buf(UCHAR reg, UCHAR *pBuf, UCHAR bytes)
157 {
158 1 UCHAR status,i;
159 1
160 1 CSN = 0; //
161 1 status = SPI_RW(reg); //
162 1 for(i=0; i<bytes; i++) //
163 1 SPI_RW(*pBuf++);
164 1 CSN = 1; //
165 1 return(status); //
166 1 }
167 //***********************************************
168 //PTR6000 置接收模式
169 /**************************************************/
170 void RX_Mode(void)
171 {
172 1 CE=0;
173 1 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); //
174 1
175 1 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // 使能0#自动应答
176 1
177 1 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // 使能0#
178 1
179 1 SPI_RW_Reg(WRITE_REG + RF_CH, 40); // 射频通道40
C51 COMPILER V6.23a SPI 11/02/2007 08:49:05 PAGE 4
180 1
181 1 SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH); //RX/TX包宽度
182 1
183 1 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // TX_PWR:0dBm,1Mbps,增益
184 1
185 1 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f); // CRC(2 bytes),上电,接收模式.
186 1
187 1 CE = 1; // 进入接收方式
188 1
189 1 }
190 /**************************************************/
191 //PTR6000 置发射模式-写数据并发射spi_tbuf[i]16字节
192 /**************************************************/
193 void TX_Mode(void)
194 {
195 1 CE=0;
196 1
197 1 SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); // Writes TX_Address to nRF24L01
198 1 SPI_Write_Buf(WRITE_REG+RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
199 1 SPI_Write_Buf(WR_TX_PLOAD,tx_buf,TX_PLOAD_WIDTH); // Writes data to TX payload
200 1
201 1 SPI_RW_Reg(WRITE_REG + EN_AA, 0x01); // Enable Auto.Ack:Pipe0
202 1 SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0
203 1 SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
204 1 SPI_RW_Reg(WRITE_REG + RF_CH, 40); // Select RF channel 40
205 1 SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07); // TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
206 1 SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e); // Set PWR_UP bit, enable CRC(2 bytes) & Prim:TX. MAX_RT & TX
-_DS enabled..
207 1 CE=1;
208 1 }
209 /***********************************************
210 void Tst_Ptr6(void) //
211 {
212 CE = 0; //进入待机模式1
213 Ptr_Mode = 0x0f; //保存当前工作方式
214 SPI_RW_Reg(WRITE_REG+CONFIG,0x0f); //
215 // SPI_RW_Reg(WRITE_REG+EN_AA,0X01); //自动应答使能(默认0x3f)
216 // SPI_RW_Reg(WRITE_REG+EN_RXADDR,0X01); //接收地址允许(默认0x03)
217 // SPI_RW_Reg(WRITE_REG+SETUP_AW,0X0f); //收/发地址宽度(默认0x03)
218 // SPI_RW_Reg(WRITE_REG+SETUP_RETR,0X0f); //自动重发(默认0x03)
219 // SPI_RW_Reg(WRITE_REG+RF_CH,40); //射频通道(默认0x02)
220 // SPI_RW_Reg(WRITE_REG+RF_SETUP,0X07); //射频寄存器(默认0x0F)
221 SPI_RW_Reg(WRITE_REG+STATUS,0x0f); //状态寄存器(默认0x0e)
222 // SPI_RW_Reg(WRITE_REG+OBSERVE_TX,0X0f); //发送检测寄存器(只读,默认0)
223 // SPI_RW_Reg(WRITE_REG+CD ,0X0f); //载波检测(只读,默认0)
224
225 SPI_Write_Buf(WRITE_REG + RX_ADDR_P0,TX_ADDRESS,TX_ADR_WIDTH); //通道0地址"TSWX1"
226 // SPI_Write_Buf(WRITE_REG + RX_ADDR_P1,TX_ADDRESS, TX_ADR_WIDTH); //通道1地址"tswx2"
227 SPI_Write_Buf(WRITE_REG + 0x0c, TX_ADDRESS, 1); //通道2地址0xC3
228 SPI_Write_Buf(WRITE_REG + 0x0c, TX_ADDRESS, 1); //通道3地址0xC4
229 SPI_Write_Buf(WRITE_REG + 0x0c, TX_ADDRESS, 1); //通道4地址0xC5
230 SPI_Write_Buf(WRITE_REG + 0x0c, TX_ADDRESS, 1); //通道5地址0xC6
231 //
232 SPI_Write_Buf(WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); //发送地址
233 //
234 SPI_RW_Reg(WRITE_REG + RX_PW_P0,TX_PLOAD_WIDTH); //通道数据宽度20
235 SPI_RW_Reg(WRITE_REG + RX_PW_P1,TX_PLOAD_WIDTH); //
236 SPI_RW_Reg(WRITE_REG + RX_PW_P2,TX_PLOAD_WIDTH); //
237 SPI_RW_Reg(WRITE_REG + RX_PW_P3,TX_PLOAD_WIDTH); //
238 SPI_RW_Reg(WRITE_REG + RX_PW_P4,TX_PLOAD_WIDTH); //
239 SPI_RW_Reg(WRITE_REG + RX_PW_P5,TX_PLOAD_WIDTH); //
240
C51 COMPILER V6.23a SPI 11/02/2007 08:49:05 PAGE 5
241 Read_All_Reg(); //读PTR6所有寄存器
242 CE = 1; //进入接收模式
243 } */
244 /***********************************************/
245 //读ptr6所有寄存器
246 //***********************************************
247 /*void Read_All_Reg(void)
248 {
249 unsigned char i;
250
251 for (i=0;i<40;i++)
252
253 Ptr6_reg[i] = 0;
254
255 Ptr6_reg[0] = SPI_Read(0);
256 Ptr6_reg[1] = SPI_Read(1);
257 Ptr6_reg[2] = SPI_Read(2);
258 Ptr6_reg[3] = SPI_Read(3);
259 Ptr6_reg[4] = SPI_Read(4);
260 Ptr6_reg[5] = SPI_Read(5);
261 Ptr6_reg[6] = SPI_Read(6);
262 Ptr6_reg[7] = SPI_Read(7);
263 Ptr6_reg[8] = SPI_Read(8);
264 Ptr6_reg[9] = SPI_Read(9);
265 //
266 SPI_Read_Buf(RX_ADDR_P0,&Ptr6_reg[10],TX_ADR_WIDTH);
267 SPI_Read_Buf(RX_ADDR_P1,&Ptr6_reg[15],TX_ADR_WIDTH);
268 SPI_Read_Buf(RX_ADDR_P2,&Ptr6_reg[20],1);
269 SPI_Read_Buf(RX_ADDR_P3,&Ptr6_reg[21],1);
270 SPI_Read_Buf(RX_ADDR_P4,&Ptr6_reg[22],1);
271 SPI_Read_Buf(RX_ADDR_P5,&Ptr6_reg[23],1);
272 SPI_Read_Buf(TX_ADDR,&Ptr6_reg[24],TX_ADR_WIDTH);
273 //
274 Ptr6_reg[29] = SPI_Read(0x11);
275 Ptr6_reg[30] = SPI_Read(0x12);
276 Ptr6_reg[31] = SPI_Read(0x13);
277 Ptr6_reg[32] = SPI_Read(0x14);
278 Ptr6_reg[33] = SPI_Read(0x15);
279 Ptr6_reg[34] = SPI_Read(0x16);
280 Ptr6_reg[35] = SPI_Read(0x17);
281 } */
282 //***********************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 448 ----
CONSTANT SIZE = 5 ----
XDATA SIZE = 80 ----
PDATA SIZE = ---- ----
DATA SIZE = 3 11
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -