作者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/cn.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