新唐火神板開箱實作(五):CAN通訊測試
一、前言 本篇要用Python寫程式,從個人電腦連接的Kvaser Leaf Light v2透過CAN傳送資料至NuMaker-Volcano接收,並從serial port觀測資料。 二、CAN bus的結構 如下圖,如果我們要使用CAN介面,需要有CAN Controller以及CAN Transceiver。CAN Controller負責的是CAN的通訊協定, CAN Controller會依序傳輸或接收資料,並且內建CRC、ACK、中斷等邏輯電路,CPU只需要存取他的暫存器即可進行收發。這一步當然可以用軟體刻出時序,不過有獨立硬體會讓CPU輕鬆一點。現在我們在做新的專案通常會直接挑有內建CAN Controller的MCU,像是新唐的M0A23、NUC131、M482、M453都有內建。NUC131目前已經有AEC-Q101的版本了,M0A23未來應該也會有。 CAN Controller輸出的都還只是共模信號,必須透過CAN Transceiver轉換電氣特性為差動信號。新一點的CAN Transceiver除了轉換電氣特性以外,還會有超時保護、突波及ESD防護,其中超時保護是為了避免該節點的軟體或硬體出現問題,使TXD長時間保持在LOW的時候,CAN Transceiver會把輸出級的電晶體給釋放掉,避免該節點長時間保持在顯性信號占用並阻斷其他節點的通訊。 此外為了因應 很多新出的MCU工作電壓都是3.3V,再新一點的CAN Transceiver也會將bus端的5V (VCC)與CAN TX/RX端的電源(VIO)區隔開來。幾個推薦的系列: NXP TJA1051T、TI TCAN1042、Microchip MCP2551。TJA1051T和TCAN1042有分不同版本(速度、VIO、EN等等),記得要去讀一下datasheet,看一下尾數的涵義。MCP2551就很經典很便宜,不過他就沒有VIO。 現在帶VIO的1051、1042市場都缺料,交期都排到好幾個月。好在新唐的M0A23工作電壓可以到5V,做東西用MCP2551就可以了~ 三、行前準備 1. NuMaker-Volcano要焊上排針,以利...