ZHCU963A June 2021 – March 2022 TLV320AIC3101 , TLV320AIC3104 , TLV320AIC3104-Q1 , TLV320AIC3105 , TLV320AIC3106 , TLV320AIC3106-Q1 , TLV320AIC3107 , TLV320AIC3109-Q1 , TLV320AIC34
脚本就是一种文本文件,其中包含要发送到串行控制总线的数据。脚本语言非常简单,就和该语言的解析器一样。因此,程序对源脚本文件中的错误不是很宽容,但该文件的格式很简单。因此,往往很少出现错误。
脚本文件中的每一行都是一个命令。这里没有将一行扩展为多行的功能。一行以回车符终止。
一行的第一个字符为命令。表 3-7 列出了相关命令。
命令 | 说明 |
---|---|
i | 设置要使用的接口总线 |
r | 从串行控制总线读取 |
W | 写入串行控制总线 |
# | 注释 |
b | 休息 |
d | 延迟 |
第一个命令 i 为后面的命令设置要使用的接口。此命令必须后跟表 3-8 中列出的其中一个参数。
命令 | 说明 |
---|---|
i2cstd | 标准模式 I2C 总线 |
i2cfast | 快速模式 I2C 总线 |
spi8 | 具有 8 位寄存器地址的 SPI 总线 |
spi16 | 具有 16 位寄存器地址的 SPI 总线 |
gpio | 使用 USB-MODEVM GPIO 功能 |
例如,如果使用快速模式 I2C 总线,脚本会以 i i2cfast 开头。
中断命令后面没有数据。对于注释命令后面的文本,如果文本位于同一行,解析器会忽略相关文本。延迟命令允许用户以毫秒为单位指定脚本在继续运行前暂停的时间。
与脚本命令中使用的所有其他数字不同,延迟时间以十进制格式输入。另外,由于 USB 总线的延迟以及 USB-MODEVM 上处理器处理请求所需的时间,延迟时间可能并不准确。
读取或写入命令会后跟一系列字节值。每个字节值均以十六进制形式表示,并且每个字节之间必须以空格分隔。命令经过解释由程序使用Topic Link Label3.4中所述的协议发送到 TAS1020。
读取或写入命令后的第一个字节是器件的 I2C 从器件地址(如果使用的是 I2C)或要写入的第一个数据字节(如果使用的是 SPI,由于 SPI 接口在协议上没有进行标准化,因此此字节的含义会因 SPI 总线上寻址的器件而异)。第二个字节是要将数据写入的起始寄存器地址(使用 I2C 时,SPI 会有所变化,请参阅Topic Link Label3.4,以进一步了解特殊 SPI 模式可能需要的变化)。如果是读取,这两个字节会后跟数据。如果是读取,第三个字节值会是要读取的字节数(以十六进制表示)。
例如,要从寄存器地址 0x03 开始将值 0xAA 0x55 写入从器件地址为 0x90 的 I2C 器件,请写入:
#example script
i i2cfast
w 90 03 AA 55
r 90 03 2
此脚本以一个注释开头,指明将使用 I2C 总线,然后将 0xAA 0x55 写入地址为 0x90 的 I2C 从器件,并将值写入寄存器 0x03 和 0x04。然后,该脚本从寄存器地址 0x03 开始从同一器件读回两个字节。从器件值没有改变。该脚本中无需为 I2C 器件设置 R/ W 位;读取或写入命令会完成该工作。
以下示例展示了使用需要 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
允许使用空白行。不过,请确保脚本不是以空白行结束。尽管以空白行结束并不会导致脚本运行失败,但程序会执行该行,因此可能导致用户无法查看上一条命令写入或读回的数据。
在本例中,每个命令的前两个字节是要发送到 TSC2101 的命令字(0x1000,0x1360);这两个字节之后是要写入器件的数据,其中起始地址由命令字指定。第二行可能会在所用的查看器中自动换行,从而看起来不止一行;不过,仔细检查便会发现,这一行中仅在最后一个 00 之后有一个回车符。
可以使用任何文本编辑器来编写这些脚本;对于一般用途,强烈建议使用 Jedit。要获取更多信息,请访问: http://www.jedit.org。
编写好脚本后,可通过运行程序并从“File”菜单中选择 Open Command File... 来在命令窗口中使用此脚本。找到并打开所需脚本。然后,脚本便会显示在命令缓冲区中。用户还可以对缓冲区中的脚本进行编辑,但目前还无法保存命令缓冲区(之后可能会增加此功能)。
在脚本位于命令缓冲区后,可以按下 Execute Command Buffer 按钮来执行脚本。如果脚本中存在断点,脚本会执行到该点,并向用户显示一个对话框和一个按钮,按下该按钮便可继续执行脚本。准备好继续后,按下该按钮,脚本便会继续运行。
以下是一个设置了断点的脚本(其中一部分)示例:
# 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
此脚本会将值 8A 写入寄存器 7,然后读回寄存器,以验证写入是否成功。读取操作后存在 1000ms(一秒钟)延迟,用于暂停脚本运行。当脚本继续运行时,值 00 00 会写入从寄存器 0F 开始的位置。此输出通过读取两个字节并再次暂停脚本(这次是使用断点)来验证。当因为断点而出现对话框时,在用户按下对话框上的 OK 之前,脚本不会继续运行。