Linux驱动之串口驱动程序分析

Linux驱动之串口驱动程序分析

ID:37639218

大小:350.75 KB

页数:22页

时间:2019-05-27

Linux驱动之串口驱动程序分析_第1页
Linux驱动之串口驱动程序分析_第2页
Linux驱动之串口驱动程序分析_第3页
Linux驱动之串口驱动程序分析_第4页
Linux驱动之串口驱动程序分析_第5页
资源描述:

《Linux驱动之串口驱动程序分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、串口驱动分析(国嵌)1.发送和接收发送:循环buffer发送fifo发送移位寄存器接收:接收移位寄存器接收fifoFlip_buf发送的过程是:把数据写到发送fifo中,fifo把收到的数据传给发送移位寄存器(自动的,非driver控制),然后每个时钟脉冲往串口线上写一bit数据。接收的过程是:接收移位寄存器收到数据,发送给接收fifo,接收fifo事先设置好了触发门限,当里面的数据量超过门限时就会触发一个中断,调用驱动中的中断处理函数,把数据写到flip_buf中。2.寄存器UARTLineControlRegister:WordLength:数据位长度NumberofStop

2、Bit:停止位数ParityMode:奇偶校验位类型Infra-RedMode:UART/红外模式选择(当以UART模式工作时,需设为“0”)UARTControlRegisterReceiveMode:选择接收模式。如果是采用DMA模式的话,还需要指定说使用的DMA信道。TransmitMode:同上。SendBreakSignal:选择是否在传1帧资料中途发送Break信号。LoopbackMode:选择是否将UART置于Loopback测试模式。RxErrorStatusInterruptEnable:选择是否使能当发生接收异常时,是否产生接收错误中断。RxTimeOutEnabl

3、e:是否使能接收超时中断。RxInterruptType:选择接收中断类型。选择0:Pulse(脉冲式/边沿式中断。非FIFO模式时,一旦接收缓冲区中有数据,即产生一个中断;为FIFO模式时,一旦当FIFO中的资料达到一定的触发水平后,即产生一个中断)选择1:Level(电平模式中断。非FIFO模式时,只要接收缓冲区中有数据,即产生中断;为FIFO模式时,只有FIFO中的资料达到触发水平后,即产生中断)TxInterruptType:类同于RxInterruptTypeUARTFIFOConrtolRegisterFIFOEnable:FIFO使能选择。RxFIFOReset:选择当复位

4、接收FIFO时是否自动清除FIFO中的内容。TxFIFOReset:选择当复位发送FIFO时是否自动清除FIFO中的内容。RxFIFOTriggerLevel:选择接收FIFO的触发水平。TxFIFOTriggerLevel:选择发送FIFO的触发水平。UARTTX/RXStatusRegisterReceivebufferdataready:当接收缓冲寄存器从UART接收端口接收到有效资料时将自动置“1”。反之为“0则表示缓冲器中没有资料。Transmitbufferempty:当发送缓冲寄存器中为空,自动置“1”;反之表明缓冲器中正有资料等待发送。Transmitterempty:当

5、发送缓冲器中已经没有有效资料时,自动置“1”;反之表明尚有资料未发送。UARTFIFOStatusRegisterRxFIFOCount:接收FIFO中当前存放的字节数。TxFIFOCount:发送FIFO中当前存放的字节数。RxFIFOFull:为“1“表明接收FIFO已满。TxFIFOFull:为“1“表明发送FIFO已满。3.函数介绍模块初始化函数:staticint__inits3c2410uart_init(void){returnuart_register_driver(&s3c2410_reg);}使用uart_register_driver注册串口驱动。staticstr

6、uctuart_drivers3c2410_reg={owner:THIS_MODULE,normal_major:SERIAL_S3C2410_MAJOR,normal_name:"ttyS%d",callout_name:"cua%d",normal_driver:&normal,callout_major:CALLOUT_S3C2410_MAJOR,callout_driver:&callout,table:s3c2410_table,termios:s3c2410_termios,termios_locked:s3c2410_termios_locked,minor:MINOR_

7、START,nr:UART_NR,port:s3c2410_ports,cons:S3C2410_CONSOLE,};staticstructuart_ports3c2410_ports[UART_NR]={{iobase:(unsignedlong)(UART0_CTL_BASE),iotype:SERIAL_IO_PORT,irq:IRQ_RXD0,uartclk:130252800,fifosize:16,ops:&s3c24

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。