[STM8] 请教stm8无法正确读取SPI数据,示波器上显示的数据正确

[复制链接]
1106|9
 楼主| cry1109 发表于 2020-1-15 10:29 | 显示全部楼层 |阅读模式
TEK00000.PNG
黄色的是MOSI引脚,蓝色的是MISO引脚。测试的时候SPI向从机写入5个字节数据,然后再读出这5个字节数据,通过示波器观察读写的数据均正确,但是通过代码接收的数据却全是0XFF。
SPI配置如下:
  1.   GPIO_Init(NRF_IRQ_PORT, NRF_IRQ_PIN, GPIO_Mode_In_PU_No_IT);
  2.         GPIO_Init(NRF_CSN_PORT, NRF_CSN_PIN, GPIO_Mode_Out_PP_High_Fast);
  3.         GPIO_Init(NRF_CE_PORT, NRF_CE_PIN, GPIO_Mode_Out_PP_High_Fast);
  4.         GPIO_Init(NRF_SSK_PORT, NRF_SSK_PIN, GPIO_Mode_Out_PP_Low_Fast);
  5.         GPIO_Init(NRF_MOSI_PORT, NRF_MOSI_PIN, GPIO_Mode_Out_PP_Low_Fast);
  6.         GPIO_Init(NRF_MISO_PORT, NRF_MISO_PIN, GPIO_Mode_In_PU_No_IT);

  7.     SPI_Init(SPI1,
  8.            SPI_FirstBit_MSB,
  9.            SPI_BaudRatePrescaler_4,
  10.            SPI_Mode_Master,
  11.            SPI_CPOL_Low,
  12.            SPI_CPHA_1Edge,
  13.            SPI_Direction_2Lines_FullDuplex,                     
  14.            SPI_NSS_Soft,
  15.            0x07);
  16.                                                 
  17.     SPI1->DR = 0;
  18.     SPI_Cmd(SPI1, ENABLE);

尝试过修改数据捕获边缘、波特率均不行。
读写数据代码如下:
  1. static uint8_t SPI_ReadWriteByte(uint8_t byte)
  2. {
  3.     while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);     
  4.     SPI_SendData(SPI1, byte);
  5.         
  6.     while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);
  7.     return SPI_ReceiveData(SPI1);
  8. }


gyh974 发表于 2020-1-15 11:09 | 显示全部楼层
MISO没有完全拉低
 楼主| cry1109 发表于 2020-1-15 11:28 | 显示全部楼层
gyh974 发表于 2020-1-15 11:09
MISO没有完全拉低

大佬!一眼就看出问题。我只注意到有数据变化,没注意到MISO没有完全拉低。
 楼主| cry1109 发表于 2020-1-15 11:31 | 显示全部楼层
gyh974 发表于 2020-1-15 11:09
MISO没有完全拉低

MISO配置为带上拉输入,MOSI配置为推免输出,两个引脚外部均接上拉电阻,请问这样搞可以吗?我也不知道为啥电平没有被完全拉低。
kingkits 发表于 2020-1-15 11:56 | 显示全部楼层
你写的过程是正确的,说明信号线没问题。但读的时候没有数据,需要看CS信号是不是正确,可能是你写和读的转换过程中,某些操作不能符合SPI要求
 楼主| cry1109 发表于 2020-1-15 12:20 | 显示全部楼层
kingkits 发表于 2020-1-15 11:56
你写的过程是正确的,说明信号线没问题。但读的时候没有数据,需要看CS信号是不是正确,可能是你写和读的转 ...

找到原因了,MISO引脚和旁边的一个IRQ(输入)引脚短路了,导致MISO无法完全被拉低。谢谢大佬!
renzheshengui 发表于 2020-2-5 08:20 | 显示全部楼层
恭喜楼主解决问题
wakayi 发表于 2020-2-5 08:24 | 显示全部楼层
是通过什么看出来的 呢
wowu 发表于 2020-2-5 08:40 | 显示全部楼层
没有拉低就是时序的问题?
xiaoqizi 发表于 2020-2-5 08:43 | 显示全部楼层
大神啊大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

4

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