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