最近公司产品使用Tiny2451平台,设备需要通过485控制从机。所以需要在原有的UART驱动中加上485芯片的方向管教控制,现在的硬件设计使用了GPE11~GPE13作为UART0~UART2对应的485方向管教控制IO。
实现方式参考:友善6410开发板RS232改RS485(内核驱动修改)
现在的问题是,驱动已经可以正确的设置GPE11~GPE13的配置值和数据值,能发送数据,但不能接收数据,然后用万用表和逻辑分析检查GPE11~GPE13的电平,一直都是高电平(值1)。下面是驱动的调试信息,端口值和配置寄存器的值,配合S3C2451芯片的数据手册来看,配置和值都是正确的,但IO口上的电平就是没有变化。
[ 539.475000] begin uart 1, begin start_tx 140, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[ 539.475000] uart 1, start_tx 140, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT d7c3, GPESEL 0, GPEUDP 55400000
[ 539.480000] uart 1, stop_tx 140, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000
[ 539.495000] begin uart 2, begin start_tx 141, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[ 539.495000] uart 2, start_tx 141, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT e7c3, GPESEL 0, GPEUDP 55400000
[ 539.500000] uart 2, stop_tx 141, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000
[ 539.510000] begin uart 3, begin start_tx 333, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c1, GPESEL 0, GPEUDP 55400000
[ 539.510000] uart 3, start_tx 333, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[ 539.515000] uart 3, stop_tx 333, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000
另外,一开始怀疑是SPI驱动的干扰,后面把SPI驱动也禁止了,结果一样。
请各路高手指点指点,已经折腾两天了,实在没有法子了。