完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近刚上手STM32,用他来控制AD5410这个芯片。通信接口是SPI。程序现在不在手头,发不了。
简单的说下这个AD5410,这个芯片用来产生4~20mA工控通讯电流,配置这颗芯片需要STM32一次发送24位的数据,协议比较简单。 再简单说下我的程序,配置了一下STM32的程序GPIO功能和时钟,配置了IO复用时钟,配置了SPI时钟,配置SPI每次发送8位,SPI的使能线GPIO_Pin_4由软件控制。 显然在通信的时候,先使能,然后给SPI连续写三次数据(三次中间里面有判断发送完成标志,这里判断方式基本就是抄的网),然后在不使能芯片。 然后奇怪现象就是为什么那个使能线的信号只保持到了第二个数据发送接受?? 然后我就简单测试了下,如果连续写2次数据使能信号只能保持到第一个数据发送结束,如果只发一个的话,使能线会在一个位后就立马被改变了。 再看看以前公司的一个W5200的程序,发现W5200的SPI通信一次其实只要32个位,可是实际程序里面在使能后却忘SPI的发送寄存器里写了5次,最后一次注释写的是发送哑数据,然后再拉高使能IO。 这个和我以前用的ATmega的单片机的硬件SPI有点出入啊,我是刚接触STM32,是我哪里弄的不对么,求指教吐槽拍砖,我统统都收了~~ |
|
相关推荐
2个回答
|
|
为什么~~为什么要我多8个位呢,
|
|
|
|
谢谢分享!!!!!!!!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:04 , Processed in 0.661490 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号