久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

I2C時序相關代碼不理解

查看數: 1736 | 評論數: 7 | 收藏 1
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2023-6-11 21:47

正文摘要:

I2C對應的時序寫代碼: 延時函數:I2CDelay() {_nop_();_nop_();_nop_();_nop_();} 1.stop函數 void I2CStop() {     I2C_SCL = 0;     I2C_SDA = 0;     I2CDelay(); &nbs ...

回復

ID:1045628 發表于 2023-6-12 17:46
第9行,也就是你提出的問題,沒有必要,函數進來默認scl是低電平,這時候可以立馬拉低對sda進行操作
第18行延時,這是為了給從機時間,并且延時使時鐘達到從機要求
第20行延時,給從機讀數據的時間
第24行,將sda恢復到高電平并在25行做延時是為了給從機操作sda,作為ask,防止發送字節最后一位為低電平產生誤判
I2C一般也就400k最大,你這4個空操作的時間夠嗎,這芯片頻率也太低了吧
ID:1064915 發表于 2023-6-12 17:29
哈蘭德 發表于 2023-6-12 13:21
寫時序該如何理解了??

I2C_SDA = 1;是釋放總線
ID:332444 發表于 2023-6-12 16:00
哈蘭德 發表于 2023-6-12 13:21
寫時序該如何理解了??

只要注意啟動和停止那2段間隔符合即可,如1602開始的地址建立時間符合要求即可。
ID:1078938 發表于 2023-6-12 13:21
寫時序該如何理解了??
ID:1034262 發表于 2023-6-12 10:51
因為STOP之后要一定時間才能發起START,避免你發了STOP后馬上發起START,所以加了延時,這個延時根據你的器件的時序而定,有的器件要幾個us。而現代的單片機大部分速度都很快,如果發出STO跑步加延時馬上發START,間隔可能在1us以內。
ID:230500 發表于 2023-6-12 09:58
SCL和SDA都是高電平了,不理解最后一行還使用I2CDelay()的原因 ?

IIC通信速度一般都不快好像最快400K吧,單片機的速度一般遠遠大于IIC從設備;比如在調用程序里,發送Stop函數后 馬上又發Start函數,就會有類似 SCL=0;馬上又SCL=1;從設備會反應不過來; 加delay能夠讓通信更加穩定, 如果主機時鐘頻率和通信速率不高, 不加也是可以的;  個人習慣, 我一般會加幾個Nop的延時時間!  程序本身就是邊寫邊調試;剛開始能跑起來。可能到了后面你就會發現,噢,這個地方加個微妙級延時更穩定; 慢慢的這就成為經驗吧!
ID:332444 發表于 2023-6-12 08:00
I2C總線的位傳輸 起始條件:SCL為高電平時,SDA由高電平向低電平切換;表示開始傳送數據。 停止條件:SCL為高電平時,SDA由低電平向高電平跳變;表示結束傳送數據。 空閑條件:I2C總線的SDA和SCL兩條信號線同時處于高電平時;表示空閑狀態。

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品国产鲁一鲁一区二区张丽 | 久久久久黑人 | 中文字幕在线一区 | 国产精品一区在线 | 国产成人精品av | 国产精品免费一区二区三区 | 日韩一区二区三区四区五区六区 | 黄色高清视频 | 亚洲视频区 | 一区二区免费 | 一级午夜aaa免费看三区 | 欧美精品一区二区三区在线 | 天堂色区| 精品在线一区二区 | 九色在线 | 一区二区三区精品视频 | 热久久久 | 亚洲日本免费 | 国内精品久久久久 | 国产精品高潮呻吟久久aⅴ码 | 成人激情视频在线播放 | 超碰在线影院 | 色久电影 | 国产一在线观看 | 亚洲97| 国产精品亚洲欧美日韩一区在线 | 国产天堂 | 亚洲精品一区av在线播放 | 伊人久久精品一区二区三区 | 欧美午夜一区 | 伊人久久大香线 | 日韩欧美在 | 久久免费精品 | 久久高清| 岛国av一区二区三区 | 91在线视频在线观看 | 2018中文字幕第一页 | 狠狠夜夜| 亚洲欧美在线观看 | 国产欧美久久精品 | 久久精品久久久 |