如何解决我可以让 2 个 L9637 iso9141 单线收发器与 ESP32 相互通信吗?
最终,我想通过一个 (ISO 9141) OBD 阅读器,使用 ESP32 WROVER 和 L9637 单线收发器接入我的 Kawasaki Ninja 的 K 线。为此,我正在确认我的 L9637 芯片已正确连接到我的 ESP32。
我在这里:
HardwareSerial Sender(1); // Serial port1 is the 'Sender'
HardwareSerial Receiver(2); // Serial port2 is the 'Receiver'
/*
* LilyGo TTGO T7 v1.5 pins
* ___________
* GND RST | | TXD GND
* N-C VP | ESP32 | RXD 27
* VN 26 | WROVER | 22 25 (22 <- SEND-Rx)
* 35 18 | TTGO | 21 32 (21 -> RCVR-Tx)
* 33 19 | T7 | 27 TDI (27 -> SEND-Tx)
* 34 23 | v1.5 | 25 4 (25 <- RCVR-Rx)
* TMS 5 | | GND 0
* N-C 3v3 | WiFi+BLE | 5v 2
* SD2 TCK | | TDO SD1
* CMD SD3 |______usb__| SD0 CLK
* (back) (+) (-) LiPo Batt Conn
*
* ____________
* 22 <- RX 1 | SENDER | 8 LI
* LO 2 | L9637 | 7 Vs(12v)
* (5v)Vcc 3 | tranceiver | 6 K ->-> K on #2
* 27 -> TX 4 |_____#1_____| 5 Gnd |
* |
* ____________ V
* 25 <- RX 1 | RECEIVER | 8 LI |
* LO 2 | L9637 | 7 Vs(12v) |
* (5v)Vcc 3 | tranceiver | 6 K <-<- K on #1
* 21 -> TX 4 |_____#2_____| 5 Gnd
*
* (need a 510ohm between K and Vs,and a cap to Gnd on each V)
*/
// define Rx and TX on the 2 L9637 chips with K's connected:
// TX is Input for K as output. RX is Output for K as input.
#define Sender_Txd_pin 27 // to Tx on Sender
#define Sender_Rxd_pin 22 // from Rx on Sender L9637
#define Receiver_Txd_pin 21 // to Tx on Receiver L9637
#define Receiver_Rxd_pin 25 // from Rx on Receiver
void setup() {
Serial.begin(115200);
// init both L9637 RX's with a short HIGH-LOW
Serial.println( "init both with Rx HIGH" );
pinMode( Sender_Rxd_pin,OUTPUT );
pinMode( Receiver_Rxd_pin,OUTPUT );
digitalWrite( Sender_Rxd_pin,HIGH );
digitalWrite( Receiver_Rxd_pin,HIGH );
delay(300);
Serial.println( "sending both Rx LOW" );
digitalWrite( Sender_Rxd_pin,LOW );
digitalWrite( Receiver_Rxd_pin,LOW );
delay(25);
Sender.begin(10400,SERIAL_8N1,Sender_Txd_pin,Sender_Rxd_pin); // iso9141 baud rate
Receiver.begin(10400,Receiver_Txd_pin,Receiver_Rxd_pin);
}
void loop() {
Sender.println( 3 ); // just an integer
delay( 200 );
while (Receiver.available()) {
char RxdChar = Receiver.read();
Serial.print(RxdChar);
}
delay(2000);
}
注意:我已经广泛测试了代码和 ESP32 串口。它运作良好。我检查了 (2) L9637 芯片上的接线,正确供电,510 欧姆电阻器,正确的电容器,它们的 K 线相互连接。当我对发送器 L9637 TX 进行数字写入时,我可以看到 K 响应以及接收器 L9637 RX。但是当我进行串行写入时, Responder.available() 永远不会变为真。什么给?
感谢您的帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。