[STM32] NRF24L01在STM32上发送老是突然停止

[复制链接]
826|0
 楼主| 飛饵 发表于 2018-12-23 18:52 | 显示全部楼层 |阅读模式
以前在51上用过完全没问题。现在在STM32上用,发送总是突然停止,复位也没用,要断开电源重新上电才能发送。
不清楚是硬件问题还是程序问题。
以前51上是经常丢包,在电源处加个200uF电容就正常了,现在32上也加了。看现象已经不是丢包的问题。

模拟SPI时序:
  1. uchar spi_rw(uchar dat) //spi通信时序函数  能写入并接收8位数据
  2. {
  3.         uchar i;
  4.         sck=0;
  5.         for(i=0;i<8;i++)
  6.         {
  7.                 mosi=(bool)(dat&0x80);
  8.                 dat=dat<<1;
  9.                 sck=1;
  10.                 dat=dat|miso;       
  11.                 sck=0;                  
  12.         }                                  
  13.                                           
  14.         return dat;
  15. }
发送函数:
  1. void TXData(uchar *dat) //发送数据
  2. {
  3.         ce=0;//进入待机模式

  4.         write_txfifo(nRF_WRITE_REG+TX_ADDR,TX_ADDR_WIDTH,(u8 *)TX_ADDRESS);  
  5.         write_txfifo(nRF_WRITE_REG+RX_ADDR_P0,TX_ADDR_WIDTH,(u8 *)TX_ADDRESS)

  6.         write_reg(EN_AA,0x01);//选择0通道自动应答
  7.         write_reg(EN_RXADDR,0x01);//打开0通道自动应答
  8.         write_reg(SETUP_RETR,0x0a);//自动重发
  9.         write_reg(RF_CH,12);         //设置无线频率
  10.         write_reg(RF_SETUP,0x07);//设置传输速率
  11.         write_reg(CONFIG,0x0e); //发射模式

  12.         ce=1;  //拉高后开始无线发送数据
  13.         nrfdelay(25);
  14. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

117

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部