12
41
123
中级技术员
SDA配置.png (25.86 KB )
下载附件
2020-6-10 15:25 上传
部分代码.jpg (165.89 KB )
波形对比.jpg (365.81 KB )
使用特权
222
1万
4万
技术总监
ayb_ice 发表于 2020-6-10 16:32 多半是应答错了
qinchxiong 发表于 2020-6-10 16:43 能不能具体说一下,看波形,我的应答ack(0)在那个高电平产生之后发送的,但那个高电平不是我的代码操作的 ...
ayb_ice 发表于 2020-6-10 16:46 你应答时,要先切换GPIO模式
qinchxiong 发表于 2020-6-10 16:57 我了解你的意思,切换SDA为输出模式,这个我想到过,cypress平台配置sda为bidirectional,双向模式,用ps ...
6
356
1078
助理工程师
William1994 发表于 2020-6-11 08:48 每个receive byte都都必须ack(0),除了最后一个字节。 你只有N个字节后ack了一下。 你应该知道I2C的一个byt ...
ayb_ice 发表于 2020-6-11 08:24 自己测试下GPIO,这种情况下直接输出0,或1,正确吗
qinchxiong 发表于 2020-6-11 09:36 我测试了一下,这种情况下输出0,1正常,另外我的接收代码是(昨天整理代码图片时删了一句ack_i2c(0)): fo ...
ayb_ice 发表于 2020-6-11 09:36 是不是其它地方也在控制,时序没有问题,方便的话发下完整的代码
i2c_master.rar
2020-6-11 10:02 上传
点击文件名下载附件
1.6 KB
qinchxiong 发表于 2020-6-11 10:07 附件是操作代码,你说的在非clk周期内sda是高电平没有影响,我也是这么想的,但我看电脑操作的波形是没有 ...
ayb_ice 发表于 2020-6-11 10:40 read_ack只能发送一次时钟,不可以发送多次, 其它的地方暂时没看
qinchxiong 发表于 2020-6-11 11:48 static uint8_t wait_read_ack(void) { uint8_t ack = 1;
ayb_ice 发表于 2020-6-11 12:57 这是协议的问题,你连协议都没搞清楚, 读应答之前要将GPIO设为输入状态,没看到哪里有切换,
2020-6-11 13:44 上传
ayb_ice 发表于 2020-6-11 13:09 你这个代码有延时吗,这样肯定不行
qinchxiong 发表于 2020-6-11 13:51 我知道你的意思,我最开始的时候想到过这个问题,用cypress的 pSoC4配置和生成的代码,没看到IO方向切换 ...
发表回复 本版积分规则 回帖后跳转到最后一页
等级类勋章
发帖类勋章
时间类勋章
人才类勋章
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注21ic项目外包
扫码关注21ic视频号
扫码关注21ic抖音号
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才 | 论坛帮助
京公网安备 11010802024343号