中级会员
- 积分
- 229
- 金钱
- 229
- 注册时间
- 2010-12-14
- 在线时间
- 0 小时
|
想用STM32开发板和51单片机之间无线通信。于是试了一下,不行!<br />
为了找出问题!我想先应该在两个51之间实现通信!51的模拟SPI读写函数如下:12M晶振下<br />
uchar SPIx_ReadWriteByte(uchar reg)<br />
{<br />
uchar bit_ctr;<br />
for(bit_ctr=0;bit_ctr<8;bit_ctr++) // output 8-bit<br />
{<br />
NRF24L01_MOSI = (reg & 0x80); // output 'uchar', MSB to MOSI<br />
reg = (reg << 1); // shift next bit into MSB..<br />
NRF24L01_SCK = 1; // Set SCK high..<br />
reg |= NRF24L01_MISO; // capture current MISO bit<br />
NRF24L01_SCK = 0; // ..then set SCK low again<br />
}<br />
return reg; // return read uchar<br />
}<br />
其它的函数都是照搬正点原子的,如下:<br />
u8 NRF24L01_Write_Reg(u8 reg,u8 value);<br />
u8 NRF24L01_Read_Reg(u8 reg);<br />
u8 NRF24L01_Read_Buf(u8 reg,u8 *pBuf,u8 len);<br />
u8 NRF24L01_Write_Buf(u8 reg, u8 *pBuf, u8 len);<br />
u8 NRF24L01_TxPacket(u8 *txbuf);<br />
u8 NRF24L01_RxPacket(u8 *rxbuf);<br />
void RX_Mode(void);<br />
void TX_Mode(void);<br />
u8 NRF24L01_Check(void);<br />
<br />
只是去掉了上面某些函数当中的SPIx_SetSpeed(SPI_SPEED_8)函数,其它的一点也没动!<br />
利用上面的NRF24L01_Check()函数,可以检测到24L01,但就是通信不了!<br />
<br />
大家认为问题出在哪里了?请赐教!谢谢!<br /> |
|