基于STM32F的曼徹斯特電壓/電流編譯碼系統設計
4 軟件設計
軟件流程如圖6所示。系統初始化包括時(shí)鐘初始化、定時(shí)器初始化、DMA初始化等。如果一次性連續編碼的數據最比較大時(shí),應將這罩的DMA緩沖區設置為雙緩沖,為每個(gè)用到的DMA通道開(kāi)辟兩個(gè)緩沖區。當DMA使用其中的一個(gè)緩沖區時(shí),MCU調用編碼或者譯碼算法來(lái)對另外一個(gè)緩沖區進(jìn)行讀寫(xiě)操作;當DMA數據傳輸完畢的時(shí)候,發(fā)生一個(gè)DMA傳輸結束中斷,在中斷服務(wù)程序里切換到另外一個(gè)緩沖區,并將編碼算法或者譯碼算法標志位置位。當主程序查詢(xún)到標志位置位后,MCU調用編碼或者譯碼算法來(lái)對DMA先前指向的緩沖區進(jìn)行處理(填充數據或者取數據)。當然,如一次性編碼或者譯碼的數據不是很多時(shí),我們只需一個(gè)緩沖區就夠了。
因為CPU處理數據的速度要高于編碼的速率,所以CPU可以空出時(shí)間來(lái)做其他的事情,時(shí)間的長(cháng)短依賴(lài)于緩沖區的大小和編碼的速率,等到主程序中查詢(xún)到編碼或者譯碼標志位置位了再去執行編碼或者譯碼算法對數據進(jìn)行處理,這樣就提高了CPU的工作效率。在實(shí)時(shí)性要求不高的應用中,不再需要一個(gè)專(zhuān)門(mén)的CPU去處理編碼或者譯碼。
5 方案驗證
本方案已在汽車(chē)加速度傳感器模擬系統中得到了驗證,這里以某款加速度傳感器的曼徹斯特編碼協(xié)議為例,其數據幀格式為一幀數據為19位包括:2個(gè)起始位、2個(gè)類(lèi)別位、10個(gè)數據位、5個(gè)CRC效驗位。
5.1 編碼方案驗證
對圖4所示電路的T1點(diǎn)測量曼徹斯特電壓編碼的波形,電流編碼的波形通過(guò)測量T2、T3問(wèn)的壓降來(lái)間接測量。
對一幀數據0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1連續編碼,幀之間延時(shí)6μs,編碼速率400kb/s,編碼波形如圖7所示。
5.2 譯碼方案驗證
通過(guò)對某真實(shí)傳感器輸出的曼徹斯特電流碼進(jìn)行捕獲譯碼,得到其ID信息,譯碼數據如圖8所示。ID正確,譯碼成功。
結語(yǔ)
該沒(méi)計方案可以方便地實(shí)現曼徹斯特電壓、電流編碼譯碼,實(shí)現方法靈活、可靠,適用于各種類(lèi)型的曼徹斯特編碼譯碼應用領(lǐng)域。目前,本設計方案已經(jīng)成功地應用在汽車(chē)加速度傳感器模擬系統中。
評論