打印
[STM8]

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

[复制链接]
923|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cry1109|  楼主 | 2020-1-15 10:29 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

黄色的是MOSI引脚,蓝色的是MISO引脚。测试的时候SPI向从机写入5个字节数据,然后再读出这5个字节数据,通过示波器观察读写的数据均正确,但是通过代码接收的数据却全是0XFF。
SPI配置如下:
  GPIO_Init(NRF_IRQ_PORT, NRF_IRQ_PIN, GPIO_Mode_In_PU_No_IT);
        GPIO_Init(NRF_CSN_PORT, NRF_CSN_PIN, GPIO_Mode_Out_PP_High_Fast);
        GPIO_Init(NRF_CE_PORT, NRF_CE_PIN, GPIO_Mode_Out_PP_High_Fast);
        GPIO_Init(NRF_SSK_PORT, NRF_SSK_PIN, GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(NRF_MOSI_PORT, NRF_MOSI_PIN, GPIO_Mode_Out_PP_Low_Fast);
        GPIO_Init(NRF_MISO_PORT, NRF_MISO_PIN, GPIO_Mode_In_PU_No_IT);

    SPI_Init(SPI1,
           SPI_FirstBit_MSB,
           SPI_BaudRatePrescaler_4,
           SPI_Mode_Master,
           SPI_CPOL_Low,
           SPI_CPHA_1Edge,
           SPI_Direction_2Lines_FullDuplex,                     
           SPI_NSS_Soft,
           0x07);
                                                
    SPI1->DR = 0;
    SPI_Cmd(SPI1, ENABLE);

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


使用特权

评论回复
沙发
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配置为推免输出,两个引脚外部均接上拉电阻,请问这样搞可以吗?我也不知道为啥电平没有被完全拉低。

使用特权

评论回复
5
kingkits| | 2020-1-15 11:56 | 只看该作者
你写的过程是正确的,说明信号线没问题。但读的时候没有数据,需要看CS信号是不是正确,可能是你写和读的转换过程中,某些操作不能符合SPI要求

使用特权

评论回复
6
cry1109|  楼主 | 2020-1-15 12:20 | 只看该作者
kingkits 发表于 2020-1-15 11:56
你写的过程是正确的,说明信号线没问题。但读的时候没有数据,需要看CS信号是不是正确,可能是你写和读的转 ...

找到原因了,MISO引脚和旁边的一个IRQ(输入)引脚短路了,导致MISO无法完全被拉低。谢谢大佬!

使用特权

评论回复
7
renzheshengui| | 2020-2-5 08:20 | 只看该作者
恭喜楼主解决问题

使用特权

评论回复
8
wakayi| | 2020-2-5 08:24 | 只看该作者
是通过什么看出来的 呢

使用特权

评论回复
9
wowu| | 2020-2-5 08:40 | 只看该作者
没有拉低就是时序的问题?

使用特权

评论回复
10
xiaoqizi| | 2020-2-5 08:43 | 只看该作者
大神啊大神

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

40

主题

172

帖子

4

粉丝