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

STM32F4 SPI 动作时,软件片选信号被拉高,IO口程序逻辑失控

[复制链接]
alangxl 提问时间:2018-6-22 15:06 /
阅读主题, 点击返回1楼
收藏 1 评论15 发布时间:2018-6-22 15:06
15个回答
stm1024 回答时间:2018-6-28 10:56:34
我一开始在想,是不是你的外设有什么特别的地方,就是每次CS一拉低之后,出现了短路的现象?但是根据后面换代码就能解决问题,似乎并不是硬件的原因。
然后想问问,SPI1_Init里面,
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);
最后到底启用RCC没有呢?

评分

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

查看全部评分

zhongfg 回答时间:2018-6-28 12:43:40
这个问题因该是类型转换出了问题了,读2个字节数据变成读1个字节而编译器又把1字节的数据编译成2个字节的数据调用时第2个字节刚好又对IO操作的。所以出现IO电平的改变。

评分

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

查看全部评分

CD果 回答时间:2018-6-28 13:55:25
我觉得应该是类型转换的问题和你CS初始化的问题

评分

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

查看全部评分

alangxl 回答时间:2018-6-28 16:42:38
stm1024 发表于 2018-6-28 10:56
我一开始在想,是不是你的外设有什么特别的地方,就是每次CS一拉低之后,出现了短路的现象?但是根据后面换 ...

RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE);是复位SPI1
RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,DISABLE);是停止复位SPI1
我这样理解没错吧,
确实是换了读写函数就好了,是不是第一次用的读写函数没有先收SPI 导致某个标志位溢出导致的异常呢?
stm1024 回答时间:2018-6-28 18:09:43
你在使用这些前,先把CS强制拉高一下试试?

评分

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

查看全部评分

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