Linux驅(qū)動之串口驅(qū)動程序分析

Linux驅(qū)動之串口驅(qū)動程序分析

ID:37639218

大?。?50.75 KB

頁數(shù):22頁

時間:2019-05-27

Linux驅(qū)動之串口驅(qū)動程序分析_第1頁
Linux驅(qū)動之串口驅(qū)動程序分析_第2頁
Linux驅(qū)動之串口驅(qū)動程序分析_第3頁
Linux驅(qū)動之串口驅(qū)動程序分析_第4頁
Linux驅(qū)動之串口驅(qū)動程序分析_第5頁
資源描述:

《Linux驅(qū)動之串口驅(qū)動程序分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、串口驅(qū)動分析(國嵌)1.發(fā)送和接收發(fā)送:循環(huán)buffer?發(fā)送fifo?發(fā)送移位寄存器接收:接收移位寄存器?接收fifo?Flip_buf發(fā)送的過程是:把數(shù)據(jù)寫到發(fā)送fifo中,fifo把收到的數(shù)據(jù)傳給發(fā)送移位寄存器(自動的,非driver控制),然后每個時鐘脈沖往串口線上寫一bit數(shù)據(jù)。接收的過程是:接收移位寄存器收到數(shù)據(jù),發(fā)送給接收fifo,接收fifo事先設(shè)置好了觸發(fā)門限,當里面的數(shù)據(jù)量超過門限時就會觸發(fā)一個中斷,調(diào)用驅(qū)動中的中斷處理函數(shù),把數(shù)據(jù)寫到flip_buf中。2.寄存器UARTLineControlRegister:WordLength:數(shù)據(jù)位長度NumberofStop

2、Bit:停止位數(shù)ParityMode:奇偶校驗位類型Infra-RedMode:UART/紅外模式選擇(當以UART模式工作時,需設(shè)為“0”)UARTControlRegisterReceiveMode:選擇接收模式。如果是采用DMA模式的話,還需要指定說使用的DMA信道。TransmitMode:同上。SendBreakSignal:選擇是否在傳1幀資料中途發(fā)送Break信號。LoopbackMode:選擇是否將UART置于Loopback測試模式。RxErrorStatusInterruptEnable:選擇是否使能當發(fā)生接收異常時,是否產(chǎn)生接收錯誤中斷。RxTimeOutEnabl

3、e:是否使能接收超時中斷。RxInterruptType:選擇接收中斷類型。選擇0:Pulse(脈沖式/邊沿式中斷。非FIFO模式時,一旦接收緩沖區(qū)中有數(shù)據(jù),即產(chǎn)生一個中斷;為FIFO模式時,一旦當FIFO中的資料達到一定的觸發(fā)水平后,即產(chǎn)生一個中斷)選擇1:Level(電平模式中斷。非FIFO模式時,只要接收緩沖區(qū)中有數(shù)據(jù),即產(chǎn)生中斷;為FIFO模式時,只有FIFO中的資料達到觸發(fā)水平后,即產(chǎn)生中斷)TxInterruptType:類同于RxInterruptTypeUARTFIFOConrtolRegisterFIFOEnable:FIFO使能選擇。RxFIFOReset:選擇當復(fù)位

4、接收FIFO時是否自動清除FIFO中的內(nèi)容。TxFIFOReset:選擇當復(fù)位發(fā)送FIFO時是否自動清除FIFO中的內(nèi)容。RxFIFOTriggerLevel:選擇接收FIFO的觸發(fā)水平。TxFIFOTriggerLevel:選擇發(fā)送FIFO的觸發(fā)水平。UARTTX/RXStatusRegisterReceivebufferdataready:當接收緩沖寄存器從UART接收端口接收到有效資料時將自動置“1”。反之為“0則表示緩沖器中沒有資料。Transmitbufferempty:當發(fā)送緩沖寄存器中為空,自動置“1”;反之表明緩沖器中正有資料等待發(fā)送。Transmitterempty:當

5、發(fā)送緩沖器中已經(jīng)沒有有效資料時,自動置“1”;反之表明尚有資料未發(fā)送。UARTFIFOStatusRegisterRxFIFOCount:接收FIFO中當前存放的字節(jié)數(shù)。TxFIFOCount:發(fā)送FIFO中當前存放的字節(jié)數(shù)。RxFIFOFull:為“1“表明接收FIFO已滿。TxFIFOFull:為“1“表明發(fā)送FIFO已滿。3.函數(shù)介紹模塊初始化函數(shù):staticint__inits3c2410uart_init(void){returnuart_register_driver(&s3c2410_reg);}使用uart_register_driver注冊串口驅(qū)動。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

當前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。