ZHCU963A June 2021 – March 2022 TLV320AIC3101 , TLV320AIC3104 , TLV320AIC3104-Q1 , TLV320AIC3105 , TLV320AIC3106 , TLV320AIC3106-Q1 , TLV320AIC3107 , TLV320AIC3109-Q1 , TLV320AIC34
腳本就是一種文本文件,其中包含要發(fā)送到串行控制總線的數(shù)據(jù)。腳本語言非常簡單,就和該語言的解析器一樣。因此,程序?qū)υ茨_本文件中的錯(cuò)誤不是很寬容,但該文件的格式很簡單。因此,往往很少出現(xiàn)錯(cuò)誤。
腳本文件中的每一行都是一個(gè)命令。這里沒有將一行擴(kuò)展為多行的功能。一行以回車符終止。
一行的第一個(gè)字符為命令。表 3-7 列出了相關(guān)命令。
命令 | 說明 |
---|---|
i | 設(shè)置要使用的接口總線 |
r | 從串行控制總線讀取 |
W | 寫入串行控制總線 |
# | 注釋 |
b | 休息 |
d | 延遲 |
第一個(gè)命令 i 為后面的命令設(shè)置要使用的接口。此命令必須后跟表 3-8 中列出的其中一個(gè)參數(shù)。
命令 | 說明 |
---|---|
i2cstd | 標(biāo)準(zhǔn)模式 I2C 總線 |
i2cfast | 快速模式 I2C 總線 |
spi8 | 具有 8 位寄存器地址的 SPI 總線 |
spi16 | 具有 16 位寄存器地址的 SPI 總線 |
gpio | 使用 USB-MODEVM GPIO 功能 |
例如,如果使用快速模式 I2C 總線,腳本會(huì)以 i i2cfast 開頭。
中斷命令后面沒有數(shù)據(jù)。對于注釋命令后面的文本,如果文本位于同一行,解析器會(huì)忽略相關(guān)文本。延遲命令允許用戶以毫秒為單位指定腳本在繼續(xù)運(yùn)行前暫停的時(shí)間。
與腳本命令中使用的所有其他數(shù)字不同,延遲時(shí)間以十進(jìn)制格式輸入。另外,由于 USB 總線的延遲以及 USB-MODEVM 上處理器處理請求所需的時(shí)間,延遲時(shí)間可能并不準(zhǔn)確。
讀取或?qū)懭朊顣?huì)后跟一系列字節(jié)值。每個(gè)字節(jié)值均以十六進(jìn)制形式表示,并且每個(gè)字節(jié)之間必須以空格分隔。命令經(jīng)過解釋由程序使用Topic Link Label3.4中所述的協(xié)議發(fā)送到 TAS1020。
讀取或?qū)懭朊詈蟮牡谝粋€(gè)字節(jié)是器件的 I2C 從器件地址(如果使用的是 I2C)或要寫入的第一個(gè)數(shù)據(jù)字節(jié)(如果使用的是 SPI,由于 SPI 接口在協(xié)議上沒有進(jìn)行標(biāo)準(zhǔn)化,因此此字節(jié)的含義會(huì)因 SPI 總線上尋址的器件而異)。第二個(gè)字節(jié)是要將數(shù)據(jù)寫入的起始寄存器地址(使用 I2C 時(shí),SPI 會(huì)有所變化,請參閱Topic Link Label3.4,以進(jìn)一步了解特殊 SPI 模式可能需要的變化)。如果是讀取,這兩個(gè)字節(jié)會(huì)后跟數(shù)據(jù)。如果是讀取,第三個(gè)字節(jié)值會(huì)是要讀取的字節(jié)數(shù)(以十六進(jìn)制表示)。
例如,要從寄存器地址 0x03 開始將值 0xAA 0x55 寫入從器件地址為 0x90 的 I2C 器件,請寫入:
#example script
i i2cfast
w 90 03 AA 55
r 90 03 2
此腳本以一個(gè)注釋開頭,指明將使用 I2C 總線,然后將 0xAA 0x55 寫入地址為 0x90 的 I2C 從器件,并將值寫入寄存器 0x03 和 0x04。然后,該腳本從寄存器地址 0x03 開始從同一器件讀回兩個(gè)字節(jié)。從器件值沒有改變。該腳本中無需為 I2C 器件設(shè)置 R/ W 位;讀取或?qū)懭朊顣?huì)完成該工作。
以下示例展示了使用需要 16 位寄存器地址的 SPI 器件:
# setup TSC2101 for input and output
# uses SPI16 interface
# this script sets up DAC and ADC at full volume, input from onboard mic
#
# Page 2: Audio control registers
w 10 00 00 00 80 00 00 00 45 31 44 FD 40 00 31 C4
w 13 60 11 20 00 00 00 80 7F 00 C5 FE 31 40 7C 00 02 00 C4 00 00 00 23 10 FE 00 FE 00
允許使用空白行。不過,請確保腳本不是以空白行結(jié)束。盡管以空白行結(jié)束并不會(huì)導(dǎo)致腳本運(yùn)行失敗,但程序會(huì)執(zhí)行該行,因此可能導(dǎo)致用戶無法查看上一條命令寫入或讀回的數(shù)據(jù)。
在本例中,每個(gè)命令的前兩個(gè)字節(jié)是要發(fā)送到 TSC2101 的命令字(0x1000,0x1360);這兩個(gè)字節(jié)之后是要寫入器件的數(shù)據(jù),其中起始地址由命令字指定。第二行可能會(huì)在所用的查看器中自動(dòng)換行,從而看起來不止一行;不過,仔細(xì)檢查便會(huì)發(fā)現(xiàn),這一行中僅在最后一個(gè) 00 之后有一個(gè)回車符。
可以使用任何文本編輯器來編寫這些腳本;對于一般用途,強(qiáng)烈建議使用 Jedit。要獲取更多信息,請?jiān)L問: http://www.jedit.org。
編寫好腳本后,可通過運(yùn)行程序并從“File”菜單中選擇 Open Command File... 來在命令窗口中使用此腳本。找到并打開所需腳本。然后,腳本便會(huì)顯示在命令緩沖區(qū)中。用戶還可以對緩沖區(qū)中的腳本進(jìn)行編輯,但目前還無法保存命令緩沖區(qū)(之后可能會(huì)增加此功能)。
在腳本位于命令緩沖區(qū)后,可以按下 Execute Command Buffer 按鈕來執(zhí)行腳本。如果腳本中存在斷點(diǎn),腳本會(huì)執(zhí)行到該點(diǎn),并向用戶顯示一個(gè)對話框和一個(gè)按鈕,按下該按鈕便可繼續(xù)執(zhí)行腳本。準(zhǔn)備好繼續(xù)后,按下該按鈕,腳本便會(huì)繼續(xù)運(yùn)行。
以下是一個(gè)設(shè)置了斷點(diǎn)的腳本(其中一部分)示例:
# setup AIC33 for input and output
# uses I2C interface
i i2cfast
# reg 07 - codec datapath
w 30 07 8A
r 30 07 1
d 1000
# regs 15/16 - ADC volume, unmute and set to 0dB
w 30 0F 00 00
r 30 0F 2
b
此腳本會(huì)將值 8A 寫入寄存器 7,然后讀回寄存器,以驗(yàn)證寫入是否成功。讀取操作后存在 1000ms(一秒鐘)延遲,用于暫停腳本運(yùn)行。當(dāng)腳本繼續(xù)運(yùn)行時(shí),值 00 00 會(huì)寫入從寄存器 0F 開始的位置。此輸出通過讀取兩個(gè)字節(jié)并再次暫停腳本(這次是使用斷點(diǎn))來驗(yàn)證。當(dāng)因?yàn)閿帱c(diǎn)而出現(xiàn)對話框時(shí),在用戶按下對話框上的 OK 之前,腳本不會(huì)繼續(xù)運(yùn)行。