一、程式說明:
使用nuvoTon的NUC120LE3AN來宣告USB Human Interface Device (HID)作為與軟體溝通的介面,
並透過此架構來設定和操作NUC120LE3AN中2個不同的PWM介面來收接及發射IR訊號。
二、基本的程式說明及取得:
2-1、如何使用NUC120LE3AN來宣告HID Device可以參考NUC100Series BSP_CMSIS中
的Smpl_HIDTransfer。
2-2、如何設定及操作NUC120LE3AN中PWM的介面可以參考NUC100Series BSP_CMSIS中
的Smpl_DrvPWM。
2-3、如何使用程式與NUC120LE3AN進行溝通可以參考如何使用Window API與HID Device進行資料的溝通。
三、程式與M0對於控制PWM的溝通流程:
3-1、Communication Protocol 一
3-2、Capture IR Signal 一
(1) PWM的設定 - 將PWM設定為Capture的模式並依照軟體所傳送的參數進行硬體的設定。
Ex: S_DRVPWM_TIME_DATA_T ReceivePt;
TimeUnit = CountUnit;
/* PWM Timer property for Capture */
ReceivePt.u8Mode = DRVPWM_AUTO_RELOAD_MODE;
/* Set the proper frequency to capture data (Less than the input data)*/
ReceivePt.u32Frequency = 0;
ReceivePt.u8HighPulseRatio = 100;
ReceivePt.u32Duty = 0x10000;
ReceivePt.u8ClockSelector = DRVPWM_CLOCK_DIV_16;
ReceivePt.u8PreScale = (3 * TimeUnit) -1;
ReceivePt.i32Inverter = 0;
u8CapTimer = DRVPWM_CAP3;
(2) 將收到的IR訊號依照上述的協定透過HID的方式將資料回傳到軟體
(3) 由於回傳的數值單位為計數值而非實際的時間值,因此必須將收到的值乘上Time Unit
後才能正確的IR訊號顯示於DataGrid。
3-3、Transmit IR Signal 一
(1) PWM的設定 - 將PWM設定為PWM的模式並依照軟體所傳送的參數進行硬體的設定。
EX: S_DRVPWM_TIME_DATA_T EmitterPt;
/* PWM Timer property for Capture */
EmitterPt.u8HighPulseRatio = PulseRatio;
EmitterPt.u32Frequency = Frequency_kHz*1000;
EmitterPt.u8Mode = DRVPWM_AUTO_RELOAD_MODE;
EmitterPt.i32Inverter = 0;
u8EmTimer = DRVPWM_TIMER0;
(2) 將DataGrid中的資料透過HID的方式傳送到M0之前必須先將數值除以Time Unit後才能
依照上述的協定開始傳送資料。
(3) 當NUC120LE3AN完整的接收至軟體所傳送的資料後才開始進行IR訊號的發射且在傳送的時間上
必須乘上Time Unit才是正確的IR訊號,當IR訊號發射完成後回傳一個Ack到軟體,以便可以繼續
傳送下一個IR訊號。
四、執行畫面:
4-1、設定發射及接收的PWM相關參數並按下Start鍵 一
4-2、當Receiver有接收到任何紅外線訊號時會將接收的資料顯示於下面的DataGridView中一
4-3、將資料顯示依照下列兩種方式進行分列且採用Toggle的方式進行顯示模式的切換 一
(1) 使用每次固定接收的資料長度為標準。(固定長度為14)
(2) 使用固定的值來進行資料的分列並依照最長的資料列來重新設定DataGridView。(固定值為-20000)
4-4、發射IR訊號的方式是雙擊選定的資料列 一
Download:IR_Sample.rar(Source Code) IR_Sample.rar(Binary Code)
留言列表