各位,有个问题,就是我外部用的是sp_336e串口三合一芯片,CPU出去的只是TTL电平,至于转成232还是485和内核本身没有什么关系?
Gary Wu:
串口的话对Kernel侧是一样操作的,只是外部接的电平转换芯片不同而已
leo chen:
回复 Gary Wu:
485和232还是有些区别的吧,485还需要考虑是全双工还是半双工,需要有个控制脚的
zai Jonathan:
回复 leo chen:
是这样的,我用的是3合一芯片,支持RS232 RS485F和RS485H,现在是这样的,CPU的gpio 73 72来控制这个芯片的模式,如果是01就是232模式,如果10就是485H,11是485F。而27脚就是你们所说的控制方向问题与CPU连接的是UART5-RTSN这根线,这个需要在485F的时候,设置高电平,而在485H的时候高电平发送然后发送完了设置低电平接收。现在我需要在内核上支持这个是不是需要修改/dev/tty/serial/omap2-serial.c/这里面的set_mctrl这个函数,因为我发现3.2.0内核里面有个BUG. 就是这句,up->mcr |= mcr;应该是在执行前先把旧的值清掉要不然半双工切换的时候会发生问题。还有是不是改这里就行了。不用修改别的地方。请确认!谢谢!
up->mcr = (up->mcr & ~(UART_MCR_RTS | UART_MCR_DTR | UART_MCR_OUT1 | UART_MCR_OUT2 | UART_MCR_LOOP)) | mcr;