完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
看了郭天祥的I2C总线这一节,发现他在编写向AT24C的E2PROM时时序有问题。
原始部分程序为: typedef unsigned char uchar; uchar read_byte() { uchar i,j,k; scl=0;//先置时钟为0 delay();//延时一段时间 sda=1;//释放数据总线 delay();//延时 for(i=0;i<8;i++)//一位一位的读数据 { scl=1;//置时钟为1 delay(); j=sda;//读数据 k=(k<<1)|j;//将读取的8位数保存到k中 scl=0;//时钟信号变为0 delay(); } return k; } 我的疑问是:在时钟为高电平时,数据总线应该保持稳定,否则将会与起始信号与终止信号混淆。但是,程序时序存在一定问题,(for循环中)在scl高电平时读取数据,这时候数据有可能是变化的,例如上一电平为低,而这时为高,数据引起跳变。我觉得应该是这样的。 for(i=0;i<8;i++) { scl=0; delay(); j=sda;//读数据 scl=1;//高电平,数据保持稳定传输 k=(k<<1)|j; delay(); } return k;
|
|
相关推荐
7个回答
|
|
跟着时序图写不就行了
|
|
|
|
以时序图为准,写书的不一定写编码,写编码的也不一定去写书。中国教授特色!
|
|
|
|
|
|
|
|
|
|
|
|
根据芯片资料中的时序要求进行编程,如果没有达到时序要求,数据肯定会存在问题。
|
|
|
|
时序要求很关键啊
|
|
|
|
有时序图,看着那个编写时序
|
|
|
|
只有小组成员才能发言,加入小组>>
4047 浏览 0 评论
8655 浏览 0 评论
6017 浏览 0 评论
4213 浏览 1 评论
5265 浏览 0 评论
请问一下qspi mtsr引脚传输一次32bit后引脚不拉低怎么解决?
457浏览 2评论
713浏览 2评论
4966浏览 2评论
最近UJA1023开发遇到问题了,各位大神有谁知道可以替代这颗芯片的
630浏览 1评论
889浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-13 02:06 , Processed in 0.640779 second(s), Total 91, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号