作者woody5202001 (狗爺)
看板ASM
標題[問題] 如何讓Arduino在I2C連續送出Stop Signal?
時間Fri Apr 20 17:58:44 2018
大家好,小弟最近開始接觸Arduino nano,覺得非常好玩:P
最近遇到一個問題是在對一顆IC做I2C溝通
在使用該IC的某個功能時需要連續送出多組Stop訊號去觸發
Wire.endTransmission ()這個語法如果單獨使用-
會產生一個Start訊號跟9 bit(含Ack)的clock接著才會輸出Stop訊號
這邊想問的是有沒有什麼語法可以只輸出Stop訊號而不輸出其他訊號呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.72.149.73
※ 文章網址: https://webptt.com/m.aspx?n=bbs/ASM/M.1524218328.A.E8F.html
1F:→ woody5202001: 我本身有嘗試過DigitalWrite(SDA,HIGH)但無效Orz 04/20 18:01
2F:→ woody5202001: 不知道是不是因為Wire.H裡將這兩根Pin鎖死... 04/20 18:02
3F:→ cs8425: 為何要單獨的stop訊號? idle狀態是不可能傳"單獨的stop" 04/20 18:19
4F:→ cs8425: 再讀一下I2C是怎運作的吧...感覺你有搞錯那顆IC的用法 04/20 18:20
5F:→ cs8425: idle狀態: SCL=H, SDA=H 04/20 18:23
6F:→ cs8425: stop: SCL=H, SDA=L >> H 04/20 18:23
7F:→ cs8425: start: SCL=H, SDA=H >> L 04/20 18:23
8F:→ woody5202001: 因為這顆IC要進Trim mode的方式是要連打10個stop並 04/20 18:32
9F:→ woody5202001: 給出start [id] [address] [data1] []data2] 對ic本 04/20 18:32
10F:→ woody5202001: 身的電壓基準值做調整 所以狀況看起來才會很怪 04/20 18:32
11F:推 m490521: 直接用io去模擬i2c stop? 04/20 20:41
12F:→ doubletime: 同cs大的說法,無法連續打出stop 訊號 04/21 05:17
13F:推 Anal: 同cs大說法。不可能打出連續的stop 04/23 23:30
14F:推 god145145: 哪顆IC? 04/23 23:34
感謝大家的回應,目前的做法是用另外兩根IO作為SDA SCL並打出Stop訊號
1. digitalWrite(A3 , LOW); //SCL
2. digitalWrite(A2 , LOW); //SDA
3. digitalWrite(A3 , HIGH);
4. digitalWrite(A2 , HIGH);//stop 1
1 2 3 4 1 2 3 4
連續打出來應該會是這樣: (A3)SCL_______| ̄ ̄↓_____| ̄ ̄↓__
(A2)SDA__________| ̄ ̄↓_____| ̄ ̄↓__
^ ^
Stop Stop
※ 編輯: woody5202001 (42.73.71.147), 04/30/2018 17:54:15
※ 編輯: woody5202001 (42.73.71.147), 04/30/2018 17:56:31