subsystem 看做是總線上掛載的子cpu 或者 fpga
先是方框圖
看看由哪幾個主要模塊組成.
各個模塊的 連接邏輯 從屬邏輯 模塊功能
控制流 數據流 寄存器 中斷 fifo dma
初始化時鐘 一般由系統總的時鐘控制器控制
設置寄存器 模式選擇
時序相關 波特率設置
設置fifo 一般有中斷觸發閥值 來通知子系統狀態
使能中斷 cpu側接收中斷 子系統側發送中斷 中斷優先級
使能dma dma控制器側 配置通道 子系統側發送請求 一般使能dma後 中斷由dma控制器接管,不會再觸發普通中斷 dma一般分爲單片連續內存運輸 和多片鏈式內存運輸
中斷處理函數
發送的觸發條件
接收的觸發條件
發送完成標識
接收完成標識
清除中斷方法
錯誤觸發條件
錯誤處理
先去除所有邊角功能,一般這些功能也是默認關閉的
組建一個最小功能,在一項項加上去
輪詢,不用中斷 fifo dma ,簡單無腦,缺點,佔用cpu時間,時效低,易丟失
用中斷 不用fifo dma,也較簡單,少佔用cpu時間,缺點,當系統繁忙時候,中斷被高優先級打斷,作爲從機或者異步傳輸時候,會響應慢,丟失數據所以會有中斷pace這一說法
用fifo,用dma,配置較複雜 ,一個datasheet 最複雜三塊 dma 網口 usb