Rolling Code的使用和燒錄
Rolling Code的用途
在一些電子産品中,往往需要區別不同的IC。比如在紅外線或RF paired-code的産品中,爲保證一對一的情況,常使用類似於ID碼的身份驗證碼來區別産品,這樣就避免了一個發射可能會有多個接收的情況。
AM8E_Writer提供的Rolling Code功能可以依照使用者所做的設定,在燒錄時直接對OTP Program Rom寫入一串有意義的數據,以區別不同的IC。
舉例說明
使用AM8EB156X,用8個共陽7段顯示器顯示Program Rom中的Rolling Code。此程式中Rolling Code爲4位的Rolling Code,初值爲0x0200和0x0145。
硬體電路圖如圖1所示:
圖1
硬體電路說明
PA port透過三極管控制顯示器的com端口,PB0-6分別連接顯示器的a、b、c、d、e、f、g端口。這裡需要說明的是,PA5 port做普通的I/O port,需要加上拉電阻,此處採用10K。
軟體說明
採用系統頻率(IRC 4MHZ),定時時間爲2ms,上電顯示Rolling Code值。目錄中有3個程式:”asm_movia”目錄下爲指令MOVIA的rolling code 賦值方式,”asm_retia”目錄下爲指令RETIA的rolling code 賦值方式,”asm_table”目錄下爲指令TABLEA的rolling code 賦值方式。
程式清單詳見rolling code的顯示測試程式”asm_movia\TstRollcode.asm”和 ”asm_retia\TstRollcode.asm”和 ”asm_table\TstRollcode.asm”。
Rolling Code的燒錄
Rolling Code分爲兩種模式:一種是PC連線操作(PC-Link)模式,另一種是單機操作(Stand-Alone)模式。下面爲Rolling Code設定的介紹:
(1) Instruction Type: 應用指令分爲兩個類別“MOVIA/RETIA”和”TABLEA”。
(a) MOVIA/RETIA: 修改位於Program ROM中”MOVIA/RETIA”這兩個指令所帶的常數值。
(b) TABLEA: 修改位於Program ROM 中使用者在程式中所規劃的常數表。
(2) Rolling Code Size: 依照指令類別的不同分成2個可設定的範圍。
(a) MOVIA/RETIA: 0x00~0xFFFFFFFF
(b) TABLEA: 0x00~0x0FFFFFFF
(3) Insert Value: 表示要寫入Rolling Code的相關訊息。
(a) Start Value與End Value: 表示Rolling Code可變化的範圍。
(b) Current Value: 下次要寫入的Rolling Code值。
(c) Step Value: 每次Current Value增加的值。
(d) Current List: 可設定一個以上的Current Value,且Step Value將會自動設定爲 0。(只限用於PC連線操作模式)
(4) Set Current List: 表示寫入Current List的相關設定,需要勾選上部的Current List選項才會開啓此功能。 (只限用於PC連線操作模式)
Count爲Current Value的總數,Value與Index爲Current List介面上被選取的Current Value值以及其相對應的位置。請注意Index從第0位置啟動。
可依照下面的選項進行操作:
(a) Open File: 請先行在檔案[.txt]輸入在應用指令設定範圍內的16進位值,並開啓此檔案,將顯示在開啓檔案的左側介面。
注意: 開啓檔案時,若是設定值超過應用指令設定範圍,將自動調整此值。
(b) Add:在Current List介面上,點選要新增數值的位置,並在Insert Value欄輸入欲新增的值,點選此功能將此值於此位置新增。(若是沒有選擇位置,將預設在Current List最上方新增輸入值。)
(c) Delete: 在Current List介面上,點選要刪除的值,點選此功能將此值刪除。
(d) Modify: 在Current List介面上,點選要修改的值,並在Insert Value欄輸入欲修改的值,點選此功能將此值修改。
(e) Begin Index: 在此輸入Current List中的位置,將由此位置的值啟動燒錄,並在Current Value顯示出下一次要寫入Rolling Code的值以及此值位置。請注意Index從第0位置啟動。
例子:
Current List 設定Current Value 10,12,15,23,56。此時Begin Index=3,則Current Value從23啟動,下一個值會從56啟動之後就從頭(10)啟動。
(5) To Address: 設定Rolling Code插入的指令位置,設定的Address個數是根據”Rolling Code Size”所選的來控制,Address 0 ~ Address 3分別表示指令的位址,而Bin Content 0 ~ Bin Content 3分別表示Address所指的內容。當Rolling Code在寫入時,會把Current Value覆寫到Address所指定的Bin Content中。
例子:
當在Address 0輸入”0300”時,將會顯示目前Bin Buffer中位址爲”0300”的內容,而Instruction Type所選的選項會限制可插的指令,”MOVIA” 可插的Bin Content爲 ”0x2EFF”, “RETIA”可插的Bin Content爲”0x2FFF”,"TABLEA"可插的Bin Content爲”0x3FFF”。當Bin Content所出現的值不是上述的值時,將無法把Current Value插入指定的Bin Content。
(6) OK: 點選”OK”按鈕,系統會先確認所做的設定與檔案[.bin]的內容是否一致。若一致,則可以接著進行PC連線操作(PC-Link)模式的Rolling Code燒錄或執行”下載資料至燒錄器(Download to Writer)”功能以便進行單機操作(Stand-Alone)模式的Rolling Code燒錄;若不一致,則系統會出現錯誤訊息提示。
例子1: 選擇TABLEA的方式,Start Value =0,End Value =0xFFFFFFF,Current Value=0x1450200,Step Value=2,如圖2所示:
圖2
此時Current Value從0x1450200,0x1450202……加到0xFFFFFFF,下一個值將會從0(Start Value)重新啟動。 點選”OK”按鈕,更新後如圖3所示:
圖3
由於Bin Content 的有效位數爲14位,0x0200的bit14、bit15 左移2位到0x0145中,經過移位後變成0x0514 和0x0200。
例子2: 選擇RETIA的方式,Start Value =0,End Value =0xFFFFFFF,Current Value=0x1450200,Step Value=2,如圖4所示:
圖4
此時Current Value從0x1450200,0x1450202……加到0xFFFFFFF,下一個值將會從0(Start Value)重新啟動。點選”OK”按鈕,更新後如圖5所示:
圖5
例子3: 選擇MOVIA的方式,Start Value =0,End Value =0xFFFFFFF,Current Value=0x1450200,Step Value=2,如圖6所示:
圖6
此時Current Value從0x1450200,0x1450202……加到0xFFFFFFF,下一個值將會從0(Start Value)重新啟動。點選”OK”按鈕後,更新後如圖7所示:
圖7
以下爲PC連線操作(PC-Link)模式下燒錄Rolling Code的詳細操作步驟:
(1) 開啓要燒錄Rolling Code的檔案[.bin]。
(2) 選擇工具列的 [Operation → Rolling Code Setting → PC Mode] 或點選"Auto"選項,並用"Rolling"選項旁的按鈕進行設定。
(3) 點選Instruction Type。
(4) 選擇”Rolling Code Size”。
(5) 設定Insert Value中的Start Value、End Value、Step Value、Current Value,或是Current List。
(6) 設定To Address中的對應Address值。
(7) 點選”OK”按鈕做Rolling Code的設定檢查,然後接著執行第(8)項。
(8) 在PC連線操作(PC-Link)模式下。
(a) 選擇工具列的 [Operation → Rolling Code Setting → PC Mode],設定結束請點選"Close"按鈕關 閉”Rolling Code Setting” 視窗。
(b) 若在"Auto"選項,可同時開啓Rolling Code Setting視窗。(請在"Rolling"選項旁按鈕進行設定,第一次設定後,”Rolling Code”選項將可勾選。)
(c) 點選”Auto”選項,並勾選”Rolling”選項(“Program”或”Verify”選項需先勾選)。
(d) 點選”Start”按鈕執行所勾選的動作。
圖8
以下爲單機操作(Stand-Alone)模式下燒錄Rolling Code的詳細操作步驟:
(1) 開啓要燒錄Rolling Code的檔案[.bin]。
(2) 選擇工具列的[Operation→ Rolling Code Setting → Alone Mode] 或執行”下載數據至燒錄器(Download to Writer)”功能,並用”Rolling”選項旁的按鈕進行設定。
(3) 點選Instruction Type。
(4) 選擇”Rolling Code Size”。
(5) 設定Insert Value中的Start Value、End Value、Step Value、Current Value。
(6) 設定To Address中的對應Address值。
(7) 點選”OK”按鈕做Rolling Code的設定檢查,然後接著執行第(8)項。
(8) 在單機操作(Stand-Alone)模式下:
(a) 點選"Close"按鈕關閉”Rolling Code Setting” 視窗。
(b) 執行"下載數據至燒錄器(Download to Writer)"功能,並勾選Rolling Code選項。
(c) 從”Alone Mode Setting”視窗點選"Download"下載至Writer中。
圖9