差别
这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
digi:arm-embedded:ccmp2:dt-console [2024/11/06 22:40] – 创建 robin | digi:arm-embedded:ccmp2:dt-console [2024/11/06 23:41] (当前版本) – robin | ||
---|---|---|---|
行 4: | 行 4: | ||
通常USB转UART芯片,当没有连接电脑时,和MPU通信的UART方向,RX信号保持高电平最好(符合串口通信停止位为高电平的设计逻辑,即线路处理空闲状态)。有些芯片未经初始化之前,这个引脚对MPU来说是悬浮未偏置的高阻状态,这种状态如果被处理器认为是空闲无输入还不会引发问题,如果有扰动而被当作是有输入信号,U-Boot阶段会认为用户输入任意键中断了自动启动过程而停在U-Boot界面。在Digi的CCMP25开发板上,加了一个能自动侦测方向的电源转换隔离芯片NTS0102GT来避免低功耗模式时的外围电路的一些漏电流,它也刚好可以起到稳定RX在高电平的状态,如果没有这棵电源转换隔离芯片,可以在设备对中对console口的uart的输入引脚配置为上拉模式,确保正常启动。 | 通常USB转UART芯片,当没有连接电脑时,和MPU通信的UART方向,RX信号保持高电平最好(符合串口通信停止位为高电平的设计逻辑,即线路处理空闲状态)。有些芯片未经初始化之前,这个引脚对MPU来说是悬浮未偏置的高阻状态,这种状态如果被处理器认为是空闲无输入还不会引发问题,如果有扰动而被当作是有输入信号,U-Boot阶段会认为用户输入任意键中断了自动启动过程而停在U-Boot界面。在Digi的CCMP25开发板上,加了一个能自动侦测方向的电源转换隔离芯片NTS0102GT来避免低功耗模式时的外围电路的一些漏电流,它也刚好可以起到稳定RX在高电平的状态,如果没有这棵电源转换隔离芯片,可以在设备对中对console口的uart的输入引脚配置为上拉模式,确保正常启动。 | ||
- | ===其它隔离芯片可能存在的反作用=== | + | ===**其它隔离芯片可能存在的反作用**=== |
注意,如果用普通电气隔离芯片,可能会起到相反的作用,以下图为例: | 注意,如果用普通电气隔离芯片,可能会起到相反的作用,以下图为例: | ||
- | {{: | + | {{: |
+ | |||
+ | 这里的隔离芯片,实测中发现: | ||
+ | 如果USB线没有插上,且usb转uart芯片没有供电,那么在右侧(TX2)线路可能处于低电平或浮空状态。而在左侧(RX1)线路,它本应该处于浮空状态,但实际上可能会被芯片强制拉低,这样,即便配置SOM的uart为内部上拉,也会因这里而被取消内部上拉。因此个芯片就起了反作用,它可能需要在TX2片就要添加个上拉,以确保左侧不会被拉低。 | ||
+ | |||
+ | 这类情况并不罕见,原因是有些芯片只认高电平,而把浮空和低电平都等同起来,这样就会在左侧把浮空输入当低电平处理而强制拉低,这样即使MPU的GPIO口配置成内部上拉也不足以置高电平。因为在串口信号线上要注意避免这种情况。 | ||
+ | |||
+ | ===**解决办法**=== | ||
+ | 好了,我们弄清楚了上面这个情况,就比较容易了。 | ||
+ | |||
+ | 一种就是用外部上拉来解决问题,比如上面的情况,可以测试一下加个右侧上拉,是否就可以了。 | ||
+ | |||
+ | 另一种就是不加这种隔离芯片,此时在没接USB线缆时,USB转UART给的RX信号线不论是浮空,还是低电平,只要会让MPU认为不是空闲状态,我们就需要对console口的RX内部配置成上拉,以便能确保启动。 | ||
+ | |||
+ | ==如何配置console口引脚为内部上拉== | ||
+ | 需要在设备树源码片,更改pin脚定义,把原来的浮空状态改为上拉偏置。 | ||
+ | < | ||
+ | usart2-0 { | ||
+ | u-boot, | ||
+ | phandle = < | ||
+ | |||
+ | pins1 { | ||
+ | pinmux = < | ||
+ | bias-disable; | ||
+ | drive-push-pull; | ||
+ | slew-rate = < | ||
+ | u-boot, | ||
+ | }; | ||
+ | |||
+ | pins2 { | ||
+ | pinmux = < | ||
+ | bias-disable; | ||
+ | u-boot, | ||
+ | }; | ||
+ | }; | ||
+ | </ | ||
+ | |||
+ | 上面的pins1和pins2分别对应Tx和Rx引脚,默认是Bias-disable,需要改为bias-pull-up表示上拉偏置。 | ||
+ | |||
+ | ===**关于别名**=== | ||
+ | Linux中对串口的初始化需要在设备树里设置别名,比如: | ||
+ | |||
+ | | ||
+ | | ||
+ | | ||
+ | }; | ||