基于DMA控制器的UART串行通信設計
2)設置定時(shí)器UART_DMA_TX_TIMER,定時(shí)值為T(mén)s,即每T秒定時(shí)器UART_DMA_TX_TIMER發(fā)生一次中斷。中斷服務(wù)為檢查DMAx_LINK_LIST_FI LL_TABLE的隊列長(cháng)度L,判斷是否有可用的鏈表地址。如果有,則執行出隊操作取出一個(gè)緩存地址FILL_CACHE_0,將其入隊到UART_LINK_LIST _STORE_TABLE中。然后利用其中的源地址、目標地址和ControIValue值,將其分配給DMA通道x的相應寄存器。若L>1,則再取出一個(gè)地址,入隊到UART_LINK_LIST_STORE_TABLE,將其值賦給DMAx的LLI寄存器。如果仍有可用鏈表地址,則取出,入隊到UART_LINK_LIST_STORE_TABLE,將其值賦給上一個(gè)鏈表地址中的LinkList_NextListAddress,然后依次類(lèi)似操作,直到最一個(gè)取出后,將其LinkList_Next-ListAddress賦為0。若L=1,則將DMAx的LLI寄存器的值置為0。最后設置DMAx的Config寄存器,設置內容有目標外設為UART_TX、傳送類(lèi)型為MEMORY TO PERIP HERAL、不屏避Terminal Count中斷、DMAx通道使能,啟動(dòng)DMAx傳輸。流程如圖2所示。本文引用地址:http://dyxdggzs.com/article/160710.htm
評論