完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
今天的主要任务是阅读代码,印象最深刻的收获就是看懂了 I2C 总线的协议:当时资料上的总结如下:
1、I2C总线是一种只使用两根线进行通信的机制,一根线输入时钟SCK,一根线传输数据或是地址 SDA 2、I2C协议规定,每次传输的数据都是8位的,并且必须在数据/ 地址线空闲的时候传输(空闲我理解为低电平!) 3、I2C协议规定,当SCK为高电平的时候,数据 /地址线无法传输数据,当SDA下降沿的时候,作为数据传输的起始信号;当SDA上升沿的时候,作为数据传输的停止信号! 4、I2C协议规定,每传输完一个字节的数据,接收器都必须要发送一个应答信号。作为应答器的一方要在第九个时钟周期将SDA信号拉低。(但是,当主器件作为应答方的时候,有时候可以不发送应答信号,但是在比如连续接收的时候,还是要的) 这样一来,就可以推测出I2C数据收发的一些通用的代码了,如下: I2C数据接收代码: Read_byte(){ unsigned char i,k; SCK = 0; delay();//空操作 SDA = 1; delay(); for(i = 0; i < 8; i++){ SCK = 1; delay(); k = (k<<1) | SDA; delay(); SCK = 0; delay(); } } I2C数据发送代码 Write_type(unsigned char data){ unsigned char tempData; tempData = data; for(i = 0; i < 8; i++){ tempData = tempData<<1; SCK = 0; delay(); ADS = CY;//CY是移位后,被移除的那一位 delay(); SCK = 1; delay(); } } 这其中,空操作的目的是让数据线和时钟信号线上的电平信号稳定。在这里没有考虑应答信号,这只是一个读/写操作,并不是完整的数据传输流程,但是对于单字节的读/ 写,应该可以在功能上满足。 除此之外,就是读了其他的芯片如24C08,74HC595等的芯片说明书。怎么说呢,感觉还是没有把握到阅读芯片说明书的要诀!主要是参照实际编写的代码,对说明书有了一个印象。只是这些说明书都是中文的,感觉上编写的时候都比较匆忙!对于一些细节上的东西还是写的不是很清楚,另外还有一些是经验性的描述。但是不管怎么说,今天还是很有收获的,希望日后能够不断进步! PS:本人现在大三,在嵌入式领域只能算是一个刚刚看见门槛的小学生,上面的写的东西大部分是我看的资料,也有一些是我的想法。如果您不小心点开了,又不幸看完了,那么我还真是感激不尽!当然,如果您愿意留下只言片语,或是交流,或是指正,鄙人更是感激万分! 末学后进在这里,希望与大家一起进步,成长! |
|
相关推荐
4 个讨论
|
|
|
加油
|
|
|
|
|
|
|
|
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16902 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:44 , Processed in 0.781524 second(s), Total 65, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2545