最近晶片組開始陸陸續續的切到 eSPI上,以往透過 LPC 取 Port 80 的方式也開始改由 eSPI 來做,而之前一直想嘗試將 Port 80 的資料從 EC 解出來,甚至是透過 Serial Port 丟出,前陣子終於搞出來了,但由於仍需要透過終端機去解析 Port 80,仍然有不便的地方,所以嘗試用土炮的方式,透過 Arduino 去接收 UART 的資料,並轉為七段顯示器丟出,或許能更方便一點。
準備 :
1. Arduino UNO or NANO (範例使用的是 NANO)
2. 一個雙位數七段顯示器 (範例使用的是 共陰)
3. Arduino IDE 使用的是 1.0.3 版 (非常舊 .... 新的應該也是可以,但新版產出的 HEX 檔好像會比較大,有空間考量的人可以評估一下)
線路 :
Arduino 2 Dig. 7 Led
D2 A
D3 B
D4 C
D5 D
D6 E
D7 F
D8 G
D9 Dig 1 (LO)
D10 Dig 2 (Hi)
RX for Receive Serial (TTL) if use RS232 , need level shift !
程式碼注意事項 :
1. 由於是雙位數七段,A-G 訊號是共用的,必須透過 Dig 1 & 2 切換,因此如果切換時間太慢
或沒有切換,會出現只有一個 LED 亮的情況,因此程式內在顯示的程序,會透過迴圈的方式重複切換 Dig 1 & 2 數次,確保人眼可以看到完整燈號,也盡量避免閃爍。
2. 因為 Arduino UNO 預設的 Serial Buffer 為 64 Bytes,如果一次接收的資料量很多,可能會出現漏資料的狀況 ...。
3. 接收的串列資料格式為 16 進制 (Hex)。
4. 目前預設使用的 Baud Rate 是 115200。
如果打算直接寫入 HEX 檔案的話,可使用下面命令,進行寫入 :
avrdude -Cavrdude.conf -v -patmega328p -carduino -PCOM11 -b115200 -D -Uflash:w:SevenPort80.cpp.hex:i
P.S: -P 參數後的 COM Port是當前 Arduino 所使用的。效果圖 :
原始檔案 :
Src File
Hex File
參考看看。