我的猜测是,只有当电压水平达到它们的三态水平(例如对于此设备而言约为~2.2V)时,才会启动实际的驱动程序。之后,一切都按预期工作。
我已经尝试查找任何配置文件以在引导时设置引脚的默认IO电平(认为这可能由引导加载程序设置),但没有发现。
此外,我尝试应用一个“足够早”的启动脚本来将DATA高电平,但据我所知,该设备没有提供任何接口来控制这些引脚作为常规GPIO。
非常感谢任何帮助、提示或见解!
编辑:我不是一个经验丰富的Linux开发人员,所以请指出我是否遗漏了任何重要的细节。
一些规格:
- CPU:ARM920T rev 0(v41)
- Linux 2.6的专有分发版本
- 使用Busybox
- Atmel USART驱动程序
从启动日志中提取:
Linux版本2.6.28.10(root@)(gcc版本4.1.2)#94 PREEMPT Tue Oct 29 10:22:19 CET 2013
CPU:ARM920T [41129200]修订版0(ARMv4T),cr=c0003177
/...
.../
RS485模式为端口/dev/ttyS3启用
/...
...(我猜测在这里经过约30秒)
.../
atmel_usart.3:ttyS3位于MMIO 0xfffcc000(irq=9), 是ATMEL_SERIAL
atmel_serial.3:将RS485 RTS引脚向下拉
/...
...
.../
完整的启动日志:https://drive.google.com/file/d/0B2XYl1mNCa8jNUZ5V0Nic1hkU0U/view
类似的问题:
可能类似的问题在这里讨论:UART初始化:防止UART拉高RTS但我不确定如何执行建议的解决方案。
![我的设备启动期间的RS485输出](https://istack.dev59.com/LI63b.webp)