液晶顯示器邊框精密檢測系統的實現
按照Cycle模式,其處理多通道數據的代碼如下(以地址為0x10的那片ADS8364為例):
PBDATDIR = 0XFFFB; // 給IOPB2一個低電平脈沖,復位ADS8364
asm (' NOP');
PBDATDIR |= 0X0004;
PBDATDIR = 0XFFFD; // 給IOPB1一個低電平脈沖,觸發ADS8364采樣
asm ('NOP');
PBDATDIR |= 0X0002;
Delay_2ms(); // 延時一段時間,等待采樣結束
/* 來自ADS8364的6個測量值:6個通道 */
Channel1 = port10;
Channel2 = port10;
Channel3 = port10;
Channel4 = port10;
Channel5 = port10;
Channel6 = port10;
3.2 基于CAN總線的通訊模塊
測距數據采集板發送測距數據以中斷的方式完成。TMS320LF2407有專門的mailbox中斷,用于響應發送/接收中斷。每個接觸式傳感器的測距值在DSP內用2個字節存儲,而CAN總線傳輸標準要求每個數據幀最多只能傳輸8個字節的數據。本系統有12個傳感器,共有24個字節存儲所有測距值。CAN總線傳輸所有測距值需要3個數據幀才能傳送完。該系統中將通訊模塊分成發送和接收模塊兩個部分。在設計中將發送和接收封裝成結構體,大大簡化了通訊驅動模塊的設計,并可將此通訊結構應用在任何CAN通訊方面,具有很強的通用性。
發送模塊:
typedef struct Transmit
{
BOOLEAN ExtendFlag; // 擴展幀標志
BOOLEAN RemoteFlag; // 遠程幀標志
LONG ID; // 本機地址
BYTE DataLen; // 發送數據長度
BYTE Data[8]; // 待發數據緩沖區
}TRANSMIT;
接收模塊:
typedef struct Receive
{
BYTE DataLen;
BYTE Data[8];
}RECEIVE;
編寫驅動函數不僅能省去對寄存器的繁瑣設置,使數據幀的發送和接收更方便,而且可使代碼具有很強的可移植性,調用驅動函數的代碼完全可以在不同的系統中移植,只要改寫驅動函數部分即可。
本文介紹的顯示器邊框檢測系統采用接觸式測距的方式,并用TMS320LF2407作為核心處理器,可以達到很高的測量精度。通過CAN總線通訊,可以將測量數據可靠地發給PC機,并實現大規模檢測。此系統已經在實際生產中得到應用,驗證了硬件系統的可靠性和穩定性。
評論