![]() |
發布時間: 2020-3-22 13:56
正文摘要:首先感謝關注 我的問題首先第一個問題就是在軟件模擬IIC的時候時鐘信號的一個問題 上面的SDA_OUT()就是配置數據線為輸出模式,IIC_SCL和IIC_SDA就是I/O口輸出。這里我想不通,希望前輩指教。 最后就是IIC的 ... |
wo4fisher 發表于 2020-3-22 13:56 感謝回答 ![]() |
xuyaqi 發表于 2020-3-22 15:13 弄懂了,謝謝 ![]() |
xuyaqi 發表于 2020-3-22 15:13 但這是3.3V的電壓該怎么算呢? |
告訴你個小技巧,在proteus里面建個mcu然后加載HEX文件,用仿真示波器觀察i2c數據線上的波形判斷是否正常。 |
首先不能加在一起算,而是分別2.5v供電時 T高>4us,T低>4.7us,4.5-5.5供電時 T高>0.6us,T低>1.2us,這也解答了你別人為什么是2us,因為別人是4.5-5.5供電。 |
首先是傳輸頻率,表格里邊有兩種,不同的電壓,他們的傳輸頻率最大值是不一樣的,1.8V左右的時候最大不能超過100KHZ,從而也限制了高低電平的最小持續時間。5V左右的時候,最大傳輸頻率也可達到400khz;也就是說在不同大電壓情況下,在保證24C02能正常工作的情況下,還決定了數據傳輸的最高頻率。 你說的8.7us是在某一個電壓區間的值。隨著電壓這個周期值是變化的。 在5V左右的時候,其實理想情況1.8us就夠了。 例程中delay_us(x)函數一般實現延時都不是絕對的xus,而是有多少的變化的。因為一般都用軟件延時,延時并不精確,具體時間可以用示波器或者邏輯分析儀去判斷。 IIC的傳輸時鐘周期,這個時鐘并不是標準的方波,簡單點說是pwm波,不通的編程方式,這個時鐘的波形是稍有差別的。并且多數串行數據通信都是要檢測邊沿信號來進行數據改變和鎖存的。 |