DMA框圖
基本知識:翻閱K60原版英文文檔DMA章節
問題一:現有調試手段不能直觀的去得知攝像頭的調試效果
記錄:用python編寫串口上位機,了解字節流,編碼,解碼,printf()的
putchar()函數重定義等相關概念
将python串口上位機與K60串口波特率設置為460800最為合适(速度
與正确率折中最優);
問題二:DMA像素字節減少一半丢失了YUV傳輸格式兩字節中的一個字節而且接受的圖像存在錯位現象
記錄:挂示波器發現波形會在DMA接受完一幀圖像後未執行用戶函數而
立馬接受下一幀的現象
猜測1.幀中斷引腳與DMA中斷觸發源PCLK沖突
結果:實踐證明猜測錯誤
猜測2.DMA通道出現錯誤中斷導緻再次重新傳輸
結果:實踐證明錯誤
猜測3.DMA與CPU地址中線沖突導緻标志位被延時恰好跳過if語句的判斷
結果:問題解決:優化函數工作時序:進入幀中斷且滿足開啟DMA傳輸條件後
在開啟DMA傳輸時禁止幀中斷直到DMA傳輸完成且用戶函數調用完成
後才允許幀中斷(這樣功能沒發生改變而且減去在用戶函數執期幀斷
函數的執行)
記錄:圖像錯位和字節減半問題是屬于一個問題(DMA接不下來頻率12M的數據)
查閱K60官方英文文檔DMA章節的DMA應答頻率系統時鐘頻率有關如圖1,圖2,
圖1
圖2
易得:在當時系統頻率96M的情況下有公式計算的DMA的應答頻率為
96/11.5=8.34M,恰好小于頻率12M的攝像頭數據所以導緻智能接收到減半
的像素數據并且圖像會産生畸變。
解決辦法:将系統時鐘頻率升至200M(11.5*12M=138M以上即可)測時問題
完美解決。
調試心得:當時第一時間就發現了像素數據減半問題的存在也懷疑可能是DMA接不過過來這
麼高頻率的數據,但是卻毫無憑據的直覺認為這麼牛逼的DMA怎麼可能接不下來而
導緻忽略了這一猜測從而将注意力專至DMA寄存器的配置及DMAMUX的寄存器的
配置,到頭來才發現問題根源就出在DMA接收應答頻率的上面。總之一句話:調試
要步步分析猜測,猜測了就要去實踐不能沒有憑據而憑直覺,否則你隻會越調越
亂,越調越迷。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!