你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

M95512 SPI 读状态寄存器的值一直是0xFF

[复制链接]
490353119 提问时间:2018-8-19 19:14 /
M95512  SPI 读状态寄存器的值一直是0xFF,但是有几位是0的。一直读不出来,有操作过的吗?  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
        SPI_InitStructure.SPI_Mode=SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
  SPI_Init(SPI_Master1, &SPI_InitStructure);

读取状态

        while(SPI_I2S_GetFlagStatus(SPI_Master1,SPI_I2S_FLAG_TXE)==RESET)
        {
                retry++;
                if(retry>200)
                        return 0;
        }
        SPI_I2S_SendData(SPI_Master1,date);
        while(SPI_I2S_GetFlagStatus(SPI_Master1,SPI_I2S_FLAG_RXNE)==RESET)
        {
                retry++;
                if(retry>200)
                        return 0;
        }
        while(SPI_I2S_GetFlagStatus(SPI_Master1,SPI_I2S_FLAG_TXE)==RESET)
        {
                retry++;
                if(retry>200)
                        return 0;
        }
        SPI_I2S_SendData(SPI_Master1,0X00);
        while(SPI_I2S_GetFlagStatus(SPI_Master1,SPI_I2S_FLAG_RXNE)==RESET)
        {
                retry++;
                if(retry>200)
                        return 0;
        }
        return SPI_I2S_ReceiveData(SPI_Master1);


收藏 评论5 发布时间:2018-8-19 19:14

举报

5个回答
feixiang20 回答时间:2018-8-19 22:26:09
检查下是不是时序没有搞对,也可能是硬件问题 检查下引脚连线

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

butterflyspring 回答时间:2018-8-20 11:53:46
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
   SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

对一下datasheet,这两个是否正确.先看看有没有输出

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

馒头弟 回答时间:2018-8-21 08:36:06
这时候逻辑分析仪就很有用了 →_→

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

jundao721 回答时间:2018-8-22 09:43:35
你检查一下连接线,MOSI对应SDI,MISO对应SDO,一般接反了就会出现0xFF.你再看看是不是可以读芯片的ID(如果有)或REG。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

dataozi 回答时间:2018-8-22 13:11:29
查看一下EEPROM手册 SPI的速度,在看一下STM32 SPI设置的分频速度
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;(查看一下 速度)
在查看一下 EEPROM的 模式,模式1 模式2 模式3 模式4
然后 先读取一下 ID 看看 能不能读出

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版