封包開頭由 2-byte 起始字元“KS”開始,1-byte‘\r’結尾,封包內容包含封包型態(TP)、封包參數(PX)、封包校驗碼(CK)、資料(DN)以及資料長度(LN),封包的總長度不定,隨資料長度變化。
最小長度的封包格式
傳送 1 個 2 bytes 有號數 -22808(A6E8h) 的資料
傳送 3 個 2 bytes 有號數 -208, 73, -22808 (FF30h, 0049h, A6E8h)的資料
R0 Command 是針對裝置(Target) 所提供的指令,主要用來設定裝置的系統參數
設定裝置的傳輸鮑率指令,type=R0(8h), P1=KSCMD_R0_DEVICE_BAUDRATE(D1h), P2=04h, DN=BaudRate(32-bit),指令可以用來設定裝置的 UART 通訊鮑率,單位為 bps,裝置收到指令後會關掉 UART,並重新設定鮑率再啟動,設定完成後不會回傳訊息做應答
設定裝置的更新頻率指令,type=R0(8h), P1=KSCMD_R0_DEVICE_RATE(D2h), P2=04h, DN=UpdateRate(32-bit),指令可以用來設定裝置的更新頻率,單位為 Hz,設定完成後不會回傳訊息做應答
設定裝置的運行模式指令,type=R0(8h), P1=KSCMD_R0_DEVICE_MDOE(D3h), P2=mode,指令可以用來設定裝置運行模式,MODE 0 預設為不執行任何程序,模式可依需求自行定義新增,設定完成後不會回傳訊息做應答
獲取裝置的 16-Bit ID 指令,type=R0(8h), P1=KSCMD_R0_DEVICE_ID(D0h), P2=00h,指令可以用來確認裝置是否有在線上,若裝置有收到指令則會回傳 16-bit ID
Host 發送指令 … Device Check
Target 回傳 … Device ID
獲取裝置的資訊指令,type=R0(8h), P1=KSCMD_R0_DEVICE_GET(E3h), P2=KSCMD_R0_XXX 所定義的項目,指令可以用來獲取裝置上的設定,像是目前實現的鮑率、更新頻率、模式以及 ID,獲取的資訊都以 32-bit 來儲存,獲取 ID 則會回傳 32-bit ID
Host 發送指令 … Get Device Info
Target 回傳 … Device Info
R1 Command 是透過裝置(Target) 為媒介,對外部的 I2C 裝置(Device) 做讀寫的操作
I2C 寫指令,type=R1(Ch), P1=8-Bit SlaveAddress, P2=RegAddress, DN=WriteData
Host 發送指令 … I2C Single Write
Host 發送指令 … I2C Multiple Write
I2C 讀指令,type=R1(Ch), P1=(slaveAddress<<1) | 0x01, P2=regAddress, DN=ReadLength
Host 發送指令 … I2C Single Read
Target 回傳 … I2C Single Read Data
Host 發送指令 … I2C Multiple Read
Target 回傳 … I2C Multiple Read Data
R2 Command 為 R1 Command 的擴充指令集,針對外部的 I2C 裝置(Device) 做進一步的應用
掃描 I2C 裝置地址,type=R2(Dh), P1=KSCMD_R2_TWI_SCAN_DEVICE(A1h), P2=00h,掃描裝置上的 I2C 裝置地址,回傳的封包長度依實際存在的 I2C 裝置數目而改變
Host 發送指令 … I2C Scan Device
Target 回傳 … I2C Scan Address
掃描 I2C 裝置暫存器數值,type=R2(Dh), P1=KSCMD_R2_TWI_SCAN_REGISTER(A2h), P2=8-bit address,回傳指定地址的 I2C 裝置上的暫存器全部 256 bytes 數值
Host 發送指令 … I2C Scan Device Register
Target 回傳 … I2C Scan Device Register Data
此指令並無特別定義,可以自行使用