Re: [問題] 如何讓Arduino在I2C連續送出Stop Signal?

看板ASM作者 (不再在乎)時間6年前 (2018/04/25 23:16), 編輯推噓1(106)
留言7則, 2人參與, 6年前最新討論串2/2 (看更多)
※ 引述《woody5202001 (狗爺)》之銘言: 小弟想法, 如果有錯還是不妥還請指正 : 大家好,小弟最近開始接觸Arduino nano,覺得非常好玩:P : 最近遇到一個問題是在對一顆IC做I2C溝通 : 在使用該IC的某個功能時需要連續送出多組Stop訊號去觸發 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 這部分如同前輩說的只能用 IO, 小弟認知的原因是 他是單純要給訊號觸發, 若你今天是用 Wire.endTransmission () https://www.arduino.cc/en/Reference/WireEndTransmission 在某些時候 SDA pin 會試設成 input( 高祖抗 ), 故無法使用 , 如果是小弟會把這波型兜成一個 function 比如叫 wakeup() : Wire.endTransmission ()這個語法如果單獨使用- : 會產生一個Start訊號跟9 bit(含Ack)的clock接著才會輸出Stop訊號 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 一般單晶片的通訊模組整個傳輸都是兜在一起的, 除非適用 gpio 自己寫波形 : 這邊想問的是有沒有什麼語法可以只輸出Stop訊號而不輸出其他訊號呢? 所以 ic 的 initial 可以大概寫成 init_IC_model() { wakeup(); init_i2c(); // gpio set up i2c i2c_write();// 設 ic reg ..... } 以上給您參考 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.77.103.97 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1524669377.A.30F.html

04/30 17:57, 6年前 , 1F
感謝回應~ 目前解法與你的想法相同 但是IO Pin可以-
04/30 17:57, 1F

04/30 17:58, 6年前 , 2F
跟原本的SDA SCL Short在一起嗎? 這樣會不會打架?
04/30 17:58, 2F

05/01 00:39, 6年前 , 3F
是說只是把你的sad scl pin 設定成gpio
05/01 00:39, 3F

05/01 00:40, 6年前 , 4F
Sad 而不是真的另外拉pin來做
05/01 00:40, 4F

05/01 21:08, 6年前 , 5F
K大你連打了兩次Sad XD
05/01 21:08, 5F

05/01 21:09, 6年前 , 6F
記得好像有這樣設定過但不知道為什麼沒設定成功
05/01 21:09, 6F

05/01 21:11, 6年前 , 7F
如果可以這樣設定其實不需要額外再增加Relay去切
05/01 21:11, 7F
文章代碼(AID): #1Qu9l1CF (ASM)
文章代碼(AID): #1Qu9l1CF (ASM)