“线程”中讨论的其它部件:TXS0108E
按照传感器数据表中的说明,我一直在尝试将 DLP NIRscan Nano EVM (“传感器”从现在开始)连接到 J3连接器的引脚3 (UART 4接收)和4 (UART 4传输)上的 Arduino Mega。 由于 Arduino 以5V 运行,传感器以3.3V 运行,我使用了 Zhing TXS0108E 双向逻辑电平转换器以防止损坏。 我选择的逻辑电平转换器支持 UART,我可以通过让 Arduino 通过具有相同精确电路的 Raspberry 3B+(也是3.3V) UART 进行通信来验证这一点,因此我确信这不是问题所在。
下图显示了整个电路:
- 使用 Arduino 硬件串行端口1,就像在下面的代码中一样(但我也尝试了其他端口,以防万一)。
- Arduino 接地和传感器接地连接在一起。
- 逻辑电平转换器已启用,因为 OE 连接到 Arduino 的5V (将下拉电阻器连接到接地);将其连接到传感器的3.3V 不会产生任何影响。
- 传感器 RX 通过逻辑电平转换器,并在末端连接到 Arduino TX 和 viceversa;以防我尝试换用电缆而不起作用。
这是我上传到 Arduino 的最低限度代码(我已经尝试了多种变体,但都不起作用)。 正如已经说过的那样,如果我连接一个 Raspberry 而不是传感器,它就能正常工作。 代码尝试根据文档中的表格发送“读取扫描时间命令”。 我从未收到传感器的任何响应,甚至没有收到错误数据包:从串行端口读取总是返回-1,好像没有数据可用。
void setup(){
//在8N1模式下打开串行端口:8个数据位,无奇偶校验,1个停止位
//还:115200位/秒,无流量控制,超时为1毫秒
Serial1.begin(115200,serial_8N1);
Serial1.setTimeout(1);//我也尝试删除此项,但无济于事
延迟(500);
UINT8_t 值[]={
// A B C D
65,66,67,68,
//校验和
62,0,0,0,
//标志00000011:请求回复和读取模式
3,
//序列的第一个和唯一一个数据包
0,
//数据包长度:命令字节和组字节为2字节
2,0,
//命令字节0x37,组字节0x02 (NNO_CMD_READ_SCAN_TIME)
55,2,
// D C B A
68,67,66,65
};
对于(uint8_t v : values){
SERIAL1.WRITE (v);
}
}
void loo(){
接收的 UINT8_t = Serial1.Read();
//无论我等待多长时间,收到的内容始终等于-1
}
使用 DLP NIRscan Nano GUI 时,传感器工作正常。 使用同一工具,我将传感器的固件和频谱库更新为从 此处下载的最新版本,但我的电路在更新前后都无法正常工作。
我在 这里发现了一条可能类似的线索:如果你认为我的帖子是重复的,我可以随意告诉我,我会在其他线索上发布我的所有信息。