注册会员
- 积分
- 21
- 威望
- 13
- 贡献
- 6
- 兑换币
- 7
- 注册时间
- 2017-11-9
- 在线时间
- 1 小时
|
最近在做NRF51822和STM32之间的数据通讯。使用SPI协议,将nrf51822设置为主机,STM32作为从机。
1、nrf51822发送一个数值型值给STM32,stm32通过从机中断将数据读出来发送给W5500模块。单个数值型数据验证OK。代码如下:
void SPI2_IRQHandler(void)
{
if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET)
{
nrf_message = SPI_I2S_ReceiveData(SPI2);
}
if(S0_State == (S_INIT|S_CONN))
{
S0_Data&=~S_TRANSMITOK;
memcpy(Tx_Buffer,&nrf_message,1);
Write_SOCK_Data_Buffer(0, Tx_Buffer, 1);
}
}
2、问题是我想通过蓝牙主机发送字符串,我将nrf51822的MOSI,MISO接在一起,发现字符串传输是OK的。但是使用杜邦线将NRF51822和stm32 SPI接口连接后,发现使用如下代码接收到的数据并不对。
void SPI2_IRQHandler(void)
{
if (SPI_I2S_GetITStatus(SPI2, SPI_I2S_IT_RXNE) != RESET)
{
nrf_message[iii++] = SPI_I2S_ReceiveData(SPI2);
}
if(iii >= 20)
{
iii = 0;
gSPI_FlagOver = FLAG_VALID;
}
}
意思就是蓝牙发送来的数据长度为20个字节,接收满20个字节后置标志位在发送给W5500模块。这个一直存在问题,请论坛的大大们帮忙看下,STM32的SPI从模式到底该怎么搞???
|
|