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

作者: kitconan (不再在乎)   2018-04-25 23:16:10
※ 引述《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
.....
}
以上給您參考
作者: woody5202001 (狗爺)   2018-04-30 17:57:00
感謝回應~ 目前解法與你的想法相同 但是IO Pin可以-跟原本的SDA SCL Short在一起嗎? 這樣會不會打架?
作者: kitconan (不再在乎)   2018-05-01 00:39:00
是說只是把你的sad scl pin 設定成gpioSad 而不是真的另外拉pin來做
作者: woody5202001 (狗爺)   2018-05-01 21:08:00
K大你連打了兩次Sad XD記得好像有這樣設定過但不知道為什麼沒設定成功如果可以這樣設定其實不需要額外再增加Relay去切

Links booklink

Contact Us: admin [ a t ] ucptt.com