打印

GD32F103模拟3线SPI通信问题

[复制链接]
2478|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyftank|  楼主 | 2024-11-21 10:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zyftank 于 2024-11-23 17:44 编辑

最近用GD32F103CBT6读一个3线SPI接口的ADC——芯海的CS1239,因为把连接画错了,只能用IO模拟SPI进行通信,但是在读取ADC芯片寄存器值的时候,一直返回0x00,我用万用表量了一下ADC的CS和SCK的PIN脚,都是高电平,SDA一直是低电平,不知道是什么原因,求大佬位帮忙看一下程序。

使用特权

评论回复
沙发
LcwSwust| | 2024-11-21 10:41 | 只看该作者
要想用万用表测,那得把每一步的延时加到特别大(比如1秒)才行.
建议准备一个示波器.
cs1239_read_reg就有问题,在读数据前怎么有个SDA_OUTPUT,不应是SDA_INPUT吗?

使用特权

评论回复
板凳
zyftank|  楼主 | 2024-11-21 10:48 | 只看该作者
LcwSwust 发表于 2024-11-21 10:41
要想用万用表测,那得把每一步的延时加到特别大(比如1秒)才行.
建议准备一个示波器.
cs1239_read_reg就有问 ...

cs1239_read_reg读寄存器值的时候,要先发读指令和地址,所以先是SDA_OUTPUT,发送指令后再改成SDA_INPUT。

使用特权

评论回复
地板
LcwSwust| | 2024-11-21 10:58 | 只看该作者
zyftank 发表于 2024-11-21 10:48
cs1239_read_reg读寄存器值的时候,要先发读指令和地址,所以先是SDA_OUTPUT,发送指令后再改成SDA_INPUT ...

哦,是我没看仔细.
最好是用示波器看看波形,
如果没示波器,就用利用单片机的ADC造一个示波器.

使用特权

评论回复
5
xionghaoyun| | 2024-11-21 11:38 | 只看该作者
学习一下

使用特权

评论回复
6
两只袜子| | 2024-11-21 15:21 | 只看该作者
GPIO引脚连接是否正确

使用特权

评论回复
7
elephant00| | 2024-11-21 15:23 | 只看该作者
参考GD32F103CBT6和CS1239的数据手册

使用特权

评论回复
8
jcky001| | 2024-11-21 16:00 | 只看该作者
检查硬件连接是否有任何短路或断路情况。

使用特权

评论回复
9
cr315| | 2024-11-21 17:00 | 只看该作者
使用示波器来观察CS、SCK和SDA的波形是否符合SPI通信的规范。

使用特权

评论回复
10
zyftank|  楼主 | 2024-11-22 07:31 | 只看该作者
我将SDA设置成OUT_PP,然后将SDA拉高,用万用表测量只有0.9V,这是芯片坏了?

使用特权

评论回复
11
丙丁先生| | 2024-11-23 08:30 | 只看该作者
逐步排查时序、配置、连接和干扰问题,优化GPIO设置。

使用特权

评论回复
12
zyftank|  楼主 | 2024-11-23 17:44 | 只看该作者
搞了半天,最后是ADC芯片坏了。

使用特权

评论回复
13
p0gon9y| | 2024-12-17 21:52 | 只看该作者
其实估计是你的模拟SPI没配置好导致的,要不就是芯片坏了

使用特权

评论回复
14
kaif2n9j| | 2024-12-18 20:11 | 只看该作者
我觉得你可以断开ADC,直接接逻辑分析仪试试,看看时序是啥样的

使用特权

评论回复
15
l1uyn9b| | 2024-12-18 21:46 | 只看该作者
看看你的外围电路呢?是不是设计的不对劲啊?

使用特权

评论回复
16
g0d5xs| | 2024-12-19 19:18 | 只看该作者
软件模拟SPI时序问题,通过IO口模拟SPI通信需要精确控制时序。如果软件中的SPI时序模拟不正确,可能会导致数据读取错误。请仔细检查您的SPI通信协议实现,确保所有时序和延迟都正确模拟。

使用特权

评论回复
17
lamanius| | 2024-12-19 23:49 | 只看该作者
确保正确初始化了ADC芯片CS1239,并且所有必要的寄存器配置都已正确写入。如果初始化或配置不正确,可能会导致读取失败。

使用特权

评论回复
18
zhizia4f| | 2024-12-20 07:22 | 只看该作者
ADC芯片CS1239的问题,虽然使用万用表测量CS和SCK引脚为高电平,SDA引脚为低电平,但这并不能完全排除芯片本身的问题。可以尝试重新检查连接,确保所有连接都正确无误,并且没有短路或断路的情况。

使用特权

评论回复
19
y1n9an| | 2024-12-20 09:36 | 只看该作者
电源问题,确保ADC芯片CS1239的电源供应正常。如果电源不稳定或不足,可能会导致芯片工作不正常。

使用特权

评论回复
20
su1yirg| | 2024-12-20 16:11 | 只看该作者
软件读取逻辑错误,检查软件的读取逻辑是否正确。有时候软件中的错误逻辑可能导致读取失败。

使用特权

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

本版积分规则

4

主题

12

帖子

0

粉丝