serial driver 2

2440的串口结构和51的对比一下会更清楚一点
51


2440
image from http://blog.csdn.net/mr_raptor/article/details/6556133


51的发送器:单缓冲--或叫没缓冲---SBUF,接收器:双缓冲---SBUF+shiftreg。
2440的发送接收都是双缓冲---fifo+shiftreg。


micro2440的串口连线

com0独自使用一个max232,并且具备AFC
com1 com2共同使用一个max232




max3232即一个电平转换的芯片,T1IN即TTL 1 IN即0-5v的电平in,R1IN即RS232 1 IN即+-10v的电平in,比如
T1IN=0v,则T1OUT=8V
T1IN=5v,则T1OUT=-8V

T2IN=0v,则T2OUT=8V
T2IN=5v,则T2OUT=-8V

R1IN=8v,则R1OUT=0V
R1IN=-8v,则R1OUT=5V

R2IN=8v,则R2OUT=0V
R2IN=-8v,则R2OUT=5V
详细见
http://wenku.baidu.com/view/6fa52980d4d8d15abe234ead.html

自动流控AFC(Auto Float Control即硬件流控)

UART0和UART1支持有nRTS和nCTS的自动流控,UART2不支持流控。在AFC情况下,通信双方nRTS和nCTS管脚分别连接对方的nCTS和nRTS管脚。通过软件控制数据帧的发送和接收。

more details refer to  http://blog.csdn.net/mr_raptor/article/details/6556133

非自动流控(软件流控)
arm的nRTS脚属于out 模式,nCTS是in模式(所以如果接max232的话,则nRTS接到TIN,nCTS接到ROUT)
接收端的arm如果已经准备好了接收数据(主要是接收缓冲区有足够的spare空间),则置RTS为激活状态(1),此脚与另一端发送者的nCTS相连,
发送端的arm会检测nCTS脚是否是激活状态,只有激活才会发送

*************************************************************************************************************************
2012-6-21 20
对于6410,linux2.6.36.2
在open /dev/ttySAC0时,会调用serial_core.c的uart_open()函数,close时,调用uart_close()函数。
posted on 2011-12-17 07:54  _song  阅读(241)  评论(0编辑  收藏  举报