摘要:本应用笔记介绍怎样使用MAX1233/MAX1234触摸屏控制器的功能。所提供的简化控制台菜单系统支持对MAX1233/MAX1234器件寄存器的底层直接访问。每一寄存器在32个SPI™时钟周期内完成读写操作。软件对每一寄存器使用简短的助记名。使用MAX1234评估板(EV Kit)和MINIQUSB+命令模块时,软件支持最大底层控制。在随附的zip文件中,提供所有源代码。
MAX1233的工作方式和MAX1234一致,只是MAX1233采用3.3V供电,而不是5.0V。MAX1234评估板上的跳接器JU1使MAX1234工作在3.3V,以仿真MAX1233。
注意:符号"/" (例如,/CS)表示CS、PENIRQ、KEYIRQ和BUSY引脚为低电平有效。
内容目录
MAX1233/MAX1234触摸屏控制器入门
1.1) 需要的硬件
1.2) MINIQUSB+固件更新说明
1.3) 设置
1.4) 步骤
1.5) 解释SPI data in实例格式
2) 模拟I/O实例
2.1) 控制DAC输出电压
2.2) 选择ADC基准电源模式
2.3) 测量外部电压输入AUX1和AUX2
2.4) 将AUX1和AUX2转换结果译为物理值
2.5) 测量外部电压输入BAT1和BAT2
2.6) 将BAT1和BAT2转换结果译为物理值
2.7) 测量内部温度TEMP1和TEMP2
2.8) 将TEMP1转换结果译为物理值
2.9) 将TEMP1和TEMP2转换结果译为物理值
2.10) 测量外部电压输入AUX1、AUX2、BAT1、BAT2和温度
3) 触摸屏实例
3.1) 低成本商用触摸屏
3.2) 连接触摸屏和评估板
3.3) 验证触摸屏的连接
3.4) 检测触摸屏操作:根据需要扫描
3.5) 检测触摸屏操作:自动扫描
4) 键盘和通用输入/输出引脚
4.1) 配置键盘和GPIO引脚
4.2) 读写GPIO引脚
4.3) 检测按键:自动扫描
4.4) 从键盘中屏蔽单个按键
4.5) 从键盘中屏蔽一列
5) 管理功耗
6) 菜单系统
6.1) 寄存器读/写命令
6.2) 中断和状态引脚命令
6.3) 加入到更新后的MINIQUSB+固件中的命令
7) 结论
除了提高SPI接口的/CS时序之外,固件更新还包括中断驱动脉冲累加器,在MAX1233/MAX1234配置为自动扫描模式时,支持验证/PENIRQ和/KEYIRQ是否发送其自清除中断脉冲。/PENIRQ的持续时间取决于所配置的ADC转换率,/KEYIRQ的持续时间取决于所配置的开关反弹时间。
根据图1来组装硬件。
图1. 硬件配置(在后面章节中连接触摸屏)。
图2. 系统图片,使用一个3M内部连接器来连接MINIQUSB+和MAX1234评估板。
* DEMO1234 Command命令列出了输入到DEMO1234.exe程序中的命令。
** Verification列出了可以进行的物理测试,验证所执行的命令。
寄存器写操作是0000 0000 a7-a0 d15-d0格式的32位SPI传送过程。
寄存器读操作是1000 0000 a7-a0 0000 0000格式的32位SPI传送过程,在最后16位,接收到的数据从DOUT同步输入。
对于AVDD = 3.3V ±5%,DACOUT满量程范围在2.65V和3.27V之间,通常为2.96V。
对于AVDD = 5.0V ±5%,DACOUT满量程范围在4.02V和4.97V之间,通常为4.48V。
表3. DAC输出命令
对于第一次诊断,保持上电模式(ADC3210 = 0000,RES10 = 01)支持使用手持式DVM对基准电压进行外部验证。
ADC扫描选择位设置为0000,写入ADC控制寄存器(0x40),来设置ADC基准电源模式。RES1/RES0位选择基准电源模式,基准控制位RFV选择内部1.0V或者2.5V基准(请参考MAX1233/MAX1234数据资料的表13)。
ADC控制字:x x 0 0 0 0 RES1 RES0 x x x x x x x RFV
表4. 内部基准命令
表5. 外部基准命令
表10. 触摸屏物理连接验证命令序列
表11. 纠正触摸屏连接问题
表12. 触摸屏检测命令序列:根据需要扫描
表13. 触摸屏检测命令序列:自动扫描
表14. 键盘和GPIO配置实例
表15. GPIO实例
表16. 按键命令序列:自动扫描
表17. 按键命令序列:屏蔽单个按键
表18. 按键命令序列:屏蔽键盘的一列
CmodComm测试程序主菜单—在连接前
A) adjust timing parameters
L) CmodLog... functions
C) connect
D) Debug Messages
X) exit
对C (连接)命令的响应
C
Hardware supports optimized native SMBus commands.
Board connected.
Got board banner: Maxim MINIQUSB V01.05.41 >
Firmware version is OK.
(configured for SPI auto-CS 4-byte mode) (SCLK=2MHz) ...
主菜单—连接后有效
T) Test the device
8) CmodP8Bus... functions
A) adjust timing parameters
L) CmodLog... functions
P) CmodPin... functions
S) CmodSpi... functions
M) CmodSMBus... functions
$) CmodCommStringWrite list of hex codes
R) CmodBoardReset
D) Disconnect
测试菜单命令—连接后有效
R) Read register
W) Write register
M0) measure no measurement; configure reference
M1) measure X,Y
M2) measure X,Y,Z1,Z2
M3) measure X
M4) measure Y
M5) measure Z1,Z2
M6) measure BAT1/4
M7) measure BAT2/4
M8) measure AUX1
M9) measure AUX2
MA) measure TEMP1
MB) measure BAT1/4,BAT2/4,AUX1,AUX2,TEMP1,TEMP2
MC) measure TEMP1,TEMP2
MD) no measurement; drive Y+,Y-
ME) no measurement; drive X+,X-
MF) no measurement; drive Y+,X-
.) Exit this menu
表21. 写入寄存器助记符
表22. 触摸屏测量命令序列
表25. 更新后MINIQUSB+固件01.05.41中的中断脉冲累加器命令
MAX1233的工作方式和
注意:符号"/" (例如,/CS)表示CS、PENIRQ、KEYIRQ和BUSY引脚为低电平有效。
内容目录
MAX1233/MAX1234触摸屏控制器入门
1.1) 需要的硬件
1.2) MINIQUSB+固件更新说明
1.3) 设置
1.4) 步骤
1.5) 解释SPI data in实例格式
2) 模拟I/O实例
2.1) 控制DAC输出电压
2.2) 选择ADC基准电源模式
2.3) 测量外部电压输入AUX1和AUX2
2.4) 将AUX1和AUX2转换结果译为物理值
2.5) 测量外部电压输入BAT1和BAT2
2.6) 将BAT1和BAT2转换结果译为物理值
2.7) 测量内部温度TEMP1和TEMP2
2.8) 将TEMP1转换结果译为物理值
2.9) 将TEMP1和TEMP2转换结果译为物理值
2.10) 测量外部电压输入AUX1、AUX2、BAT1、BAT2和温度
3) 触摸屏实例
3.1) 低成本商用触摸屏
3.2) 连接触摸屏和评估板
3.3) 验证触摸屏的连接
3.4) 检测触摸屏操作:根据需要扫描
3.5) 检测触摸屏操作:自动扫描
4) 键盘和通用输入/输出引脚
4.1) 配置键盘和GPIO引脚
4.2) 读写GPIO引脚
4.3) 检测按键:自动扫描
4.4) 从键盘中屏蔽单个按键
4.5) 从键盘中屏蔽一列
5) 管理功耗
6) 菜单系统
6.1) 寄存器读/写命令
6.2) 中断和状态引脚命令
6.3) 加入到更新后的MINIQUSB+固件中的命令
7) 结论
1.1) 需要的硬件
- Maxim MAX1234评估板 (MAX1234EVKIT)
- Maxim MINIQUSB+ (包括USB A-B电缆和MINIQUSB-X+扩展板)
- Windows® 2000/XP PC,支持USB。
- 四线阻性触摸屏(例如,PDA数字转换器/玻璃屏等)
- 可选:测量DAC输出电压的DMM
- 可选:驱动AUX和BAT输入的电压源
- 可选:示波器,用于观察/PENIRQ和/KEYIRQ引脚上的自动扫描中断脉冲。
1.2) MINIQUSB+固件更新说明
MAX1233/MAX1234要求/CS引脚在第一次转换结束之前,解除高电平置位;否则,ADC将无法存储转换结果。在使用本应用笔记之前,必须更新标准MINIQUSB+模块固件,使SPI接口/CS引脚在第32个SCLK 1.4µs内解除置位。在2MHz时,32位自动/CS受控模式将/CS保持低电平21.70µs。只需要对MAXQ2000微控制器非易失闪存MINIQUSB+固件更新一次。这一新固件和标准01.05.39基本固件后向兼容。除了提高SPI接口的/CS时序之外,固件更新还包括中断驱动脉冲累加器,在MAX1233/MAX1234配置为自动扫描模式时,支持验证/PENIRQ和/KEYIRQ是否发送其自清除中断脉冲。/PENIRQ的持续时间取决于所配置的ADC转换率,/KEYIRQ的持续时间取决于所配置的开关反弹时间。
1.3) 设置
下载并解压缩应用笔记文件 (ZIP, 2.4MB)。根据图1来组装硬件。
- 按照表1连接MAX1234评估板连接器J1和MINIQUSB-X+扩展电路板(包含在MINIQUSB+中)。可以采用3M®内部连接器922576-40来替代连接MAX1234评估板的焊线,将其插入到J1中,以提供方便的连接点。不要连接终端模块TB1。
表1. MAX1234评估板和MINIQUSB+电路板之间的连接设置MAX1234 Signal MAX1234 EV Kit MINIQUSB-X+ MINIQUSB Signal GND J1-1 H2-8 GND VCC J1-7 H2-1 3.3V supply from MINIQUSB+ BUSY-Bar J1-27 H2-7 GPIO-K7 (MAXQ2000-INT2) PENIRQ-Bar J1-29 H1-3 GPIO-K6 (MAXQ2000-INT1) KEYIRQ-Bar J1-31 H1-8 GPIO-K5 (MAXQ2000-INT0) DOUT J1-35* H2-2 MISO (SPI master in, slave out) DIN J1-36* H2-5 MOSI (SPI master out, slave in) SCLK J1-37* H2-3 SCLK (SPI clock) CS-Bar J1-38 H2-4 CS-bar (SPI chip select) USB+5V J1-5 J4-7 USB+5V supply from PC
- 将MINIQUSB+插入到扩展板的顶部。
- 连接MINIQUSB+和PC的USB端口。如果这是MINIQUSB+第一次和PC连接,将出现即插即用向导。指南窗口将提示器件驱动器(它包含在随附zip文件中)的安装位置。
- 启动固件更新批处理文件FWUPDATE.BAT来更新MINIQUSB+固件。
- 固件更新完成后,从PC的USB端口断开MINIQUSB+。
图1. 硬件配置(在后面章节中连接触摸屏)。
图2. 系统图片,使用一个3M内部连接器来连接MINIQUSB+和MAX1234评估板。
1.4) 步骤
- 将MAX1234评估板跳接器JU1设置到“MAX1234”位置。
- 将MINIQUSB+连接至PC的USB端口。确定DACOUT电压 = mid-scale (2.2V)。
- 启动DEMO1234.EXE程序。屏幕上将出现控制台。
- 在控制台中输入下面的命令序列。
DEMO1234 Command* |
Expected Program Output | SPI data in |
Verification** |
C |
Board connected. Got board banner: Maxim MINIQUSB V01.05.41 > Firmware version is OK. (configured for SPI auto-CS 4-byte mode) (SCLK=2MHz) ... |
||
T W DD FF |
Write_Register(regAddr=0x000b wr_DAC_data , data=0x00ff {(no bits defined for this register)}) result = 1 |
0x000b 0x00ff | DACOUT = full-scale (4.5V) |
T R DD |
Read_Register(regAddr=0x800b wr_DAC_data ) result = 1, buffer = 0x00ff = 255 {(no bits defined for this register)} |
0x800b 0x0000 | Data buffer = 0x00ff |
T W DD 80 |
Write_Register(regAddr=0x000b wr_DAC_data , data=0x0080 {(no bits defined for this register)}) result = 1 |
0x000b 0x0080 | DACOUT = mid-scale (2.2V) |
T R DD |
Read_Register(regAddr=0x800b wr_DAC_data ) result = 1, buffer = 0x0080 = 128 {(no bits defined for this register)} |
0x800b 0x0000 | data buffer = 0x0080 |
** Verification列出了可以进行的物理测试,验证所执行的命令。
1.5) SPI data in实例格式
SPI data in一列列出了驱动至MAX1233/MAX1234 DIN引脚的SPI数据,采用了十六进制格式,最高有效字节在前。例如,序列0x000b 0x00ff中的SPI数据表示同步输入到DIN的32位序列是0000 0000 0000 1011 0000 0000 1111 1111。第一位0用于寄存器写操作,1用于寄存器读操作。寄存器写操作是0000 0000 a7-a0 d15-d0格式的32位SPI传送过程。
寄存器读操作是1000 0000 a7-a0 0000 0000格式的32位SPI传送过程,在最后16位,接收到的数据从DOUT同步输入。
2) 模拟I/O实例
下面的例子介绍了怎样使用DEMO1234.EXE程序来控制DAC输出,配置基准电压,测量AUX1/AUX2/BAT1/BAT2电压输入,以及测量内部MAX1234温度。2.1) 控制DAC输出电压
由两个寄存器来控制DAC。写入DAC数据寄存器来设置输出电压。写入DAC控制寄存器来关断或者对DAC上电。默认上电状态是DAC加电,DAC输出位于量程中部。DAC满量程电压通常为AVDD的90% (最小85%,最大95%)。对于AVDD = 3.3V ±5%,DACOUT满量程范围在2.65V和3.27V之间,通常为2.96V。
对于AVDD = 5.0V ±5%,DACOUT满量程范围在4.02V和4.97V之间,通常为4.48V。
表3. DAC输出命令
DEMO1234 Command |
Action | SPI data in |
MAX1233 (3.3V) | MAX1234 (5.0V) |
T W DD FF |
DACOUT = full-scale | 0x000b 0x00ff |
DACOUT = 2.96V | DACOUT = 4.48V |
T W DD 00 |
DACOUT = 0V | 0x000b 0x0000 |
DACOUT = 0.0V | DACOUT = 0.0V |
T W DD 80 |
DACOUT = mid-scale | 0x000b 0x0080 |
DACOUT = 1.485V | DACOUT = 2.25V |
T W DC 8000 |
Disable DAC | 0x0042 0x8000 |
DACOUT = 0.0V | DACOUT = 0.0V |
T W DC 0 |
Enable DAC | 0x0042 0x0000 |
DACOUT = 1.485V | DACOUT = 2.25V |
2.2) 选择ADC基准电源模式
ADC需要一个基准电压。对于典型的嵌入式系统工作,默认设置是fine。在自动上电模式(ADC3210 = 0000,RES10 = 00)下,MAX1233/MAX1234提供自己的内部基准电压。在每次测量之前,内部基准自动上电,测量完成后关断。对于第一次诊断,保持上电模式(ADC3210 = 0000,RES10 = 01)支持使用手持式DVM对基准电压进行外部验证。
ADC扫描选择位设置为0000,写入ADC控制寄存器(0x40),来设置ADC基准电源模式。RES1/RES0位选择基准电源模式,基准控制位RFV选择内部1.0V或者2.5V基准(请参考MAX1233/MAX1234数据资料的表13)。
ADC控制字:x x 0 0 0 0 RES1 RES0 x x x x x x x RFV
表4. 内部基准命令
DEMO1234 Command |
Action | SPI data in |
Verification |
T W AC 0100 |
Internal 1V reference always powered; write ADC control word with ADC3210 = 0000, RES10 = 01, RFV = 0 |
0x0040 0x0100 |
Voltage at pin 12 REF is between 0.98V and 1.02V |
T W AC 0101 |
Internal 2.5V reference always powered; write ADC control word with ADC3210 = 0000, RES10 = 01, RFV = 1 |
0x0040 0x0101 |
Voltage at pin 12 REF is between 2.47V and 2.53V |
T W AC 0001 |
Internal 2.5V reference powered when needed; write ADC control word with ADC3210 = 0000, RES10 = 00, RFV = 1 |
0x0040 0x0001 |
Voltage at pin 12 REF will be powered only briefly as necessary |
表5. 外部基准命令
DEMO1234 Command |
Action | SPI data in |
T W AC 0300 |
External reference must be provided; ADC_control_wr_demand_scan:(write)demand scan ADC_control_AD0000:configure reference ADC_control_RES11:external reference |
0x0040 0x0300 |
2.3) 测量外部电压输入AUX1和AUX2
表6. ADC测量命令序列DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T M8 |
Measure AUX1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2301 0x8007 0x0000 |
T W AC 2301 |
Trigger ADC scan of AUX1; ADC control word 0x2301 means: ADC_control_wr_demand_scan ADC_control_AD1000 /* measure AUX1 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR00 /* conversion rate 3.5µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x2301 |
T R A1 |
Read AUX1 result AUX1_code | 0x8007 0x0000 |
T M9 |
Measure AUX2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2701 0x8008 0x0000 |
2.4) 将AUX1和AUX2转换结果译为物理值
下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释AUX1和AUX2转换结果的。/* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */ int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution */ /* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */ double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V. RFV=0: VREF=1.0V. */ /* AUX1_code is the 16-bit result read by SPI command 0x8007 */ double AUX1_Voltage = (AUX1_code * ADC_fullscale_voltage) / num_codes; /* AUX2_code is the 16-bit result read by SPI command 0x8008 */ double AUX2_Voltage = (AUX2_code * ADC_fullscale_voltage) / num_codes;
2.5) 测量外部电压输入BAT1和BAT2
表7. ADC测量命令序列DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T M6 |
Measure BAT1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x1b01 0x8005 0x0000 |
T W AC 1b01 |
Trigger ADC scan of BAT1; ADC control word 0x1b01 means: ADC_control_wr_demand_scan ADC_control_AD0110 /* measure BAT1 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR00 /* conversion rate 3.5µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x1b01 |
T R B1 |
Read BAT1 result BAT1_code | 0x8005 0x0000 |
T W AC 1b21 |
Trigger ADC scan of BAT1; ADC control word 0x1b21 means: ADC_control_wr_demand_scan ADC_control_AD0110 /* measure BAT1 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR10 /* conversion rate 10µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x1b21 |
T R B1 |
Read BAT1 result BAT1_code | 0x8005 0x0000 |
T M7 |
Measure BAT2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x1f01 0x8006 0x0000 |
2.6) 将BAT1和BAT2转换结果译为物理值
下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释BAT1和BAT2转换结果的。注意:通过一个4:1输入分配器来测量BAT1和BAT2。/* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */ int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution */ /* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */ double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V. RFV=0: VREF=1.0V. */ /* Note: BAT1 and BAT2 measure through a 4:1 input divider. */ /* BAT1_code is the 16-bit result read by SPI command 0x8005 */ double BAT1_Voltage = 4 * (BAT1_code * ADC_fullscale_voltage) / num_codes; /* BAT2_code is the 16-bit result read by SPI command 0x8006 */ double BAT2_Voltage = 4 * (BAT2_code * ADC_fullscale_voltage) / num_codes;
2.7) 测量内部温度TEMP1和TEMP2
表8. ADC测量命令序列DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T MA |
Measure TEMP1 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2b01 0x8009 0x0000 |
T W AC 2b01 |
Trigger ADC scan of TEMP1; ADC control word 0x2b01 means: ADC_control_wr_demand_scan ADC_control_ AD1010 /* measure TEMP1 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR00 /* conversion rate 3.5µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x2b01 |
T R T1 |
Read TEMP1 result TEMP1 _code | 0x8009 0x0000 |
T MC |
Measure TEMP1, TEMP2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x3301 0x8009 0x0000 0x800a 0x0000 |
T W AC 3301 |
Trigger ADC scan of TEMP1 and TEMP2; ADC control word 0x3301 means: ADC_control_wr_demand_scan ADC_control_ AD1100 /* measure TEMP1,TEMP2 */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR00 /* conversion rate 3.5µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x3301 |
T R T1 |
Read TEMP1 result TEMP1 _code | 0x8009 0x0000 |
T R T2 |
Read TEMP2 result TEMP2 _code | 0x800a 0x0000 |
2.8) 将TEMP1转换结果译为物理值
下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释TEMP1转换结果的。/* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */ int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution */ /* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */ double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V. RFV=0: VREF=1.0V. */ /* TEMP1_code is the 16-bit result read by SPI command 0x8009 */ double TEMP1_Voltage = (TEMP1_code * ADC_fullscale_voltage) / num_codes; /* Calibration values */ const double Temp1V_Room = 0.590; // temp1 voltage at room temperature 25C const double Temp1K_Room = 298.15; // Room temperature Kelvins (298.15K=25C) const double Temp1V_Per_K = -0.002; // TempCo -2mV per degree C /* Convert to absolute temperature */ double Kelvin = (TEMP1_Voltage - Temp1V_Room) / Temp1V_Per_K + Temp1K_Room; /* Optional conversion to commonly used temperature units */ double Centigrade = Kelvin - 273.15; double Fahrenheit = (Centigrade * 9.0 / 5.0) + 32;
2.9) 将TEMP1和TEMP2转换结果译为物理值
下面的C/C++伪代码片断总结了DEMO1234程序是怎样解释TEMP1和TEMP2转换结果的。TEMP2只在和TEMP1对比时才有意义。/* ADC control resolution value selects num_codes 4096 (12-bit), 1024 (10-bit), or 256 (8-bit) */ int num_codes = 4096; /* ADC_control_RES11: 12-bit resolution */ /* Voltage that corresponds to the full-scale ADC code; may be internal 1V or 2.5V ref, or ext ref. */ double ADC_fullscale_voltage = 2.5; /* ADC_control_RFV=1: VREF=2.5V. RFV=0: VREF=1.0V. */ /* TEMP1_code is the 16-bit result read by SPI command 0x8009 */ double TEMP1_Voltage = (TEMP1_code * ADC_fullscale_voltage) / num_codes; /* TEMP2_code is the 16-bit result read by SPI command 0x800a */ double TEMP2_Voltage = (TEMP2_code * ADC_fullscale_voltage) / num_codes; /* Calibration values */ const double K_Per_Temp21_Delta_V = 2680.0; // nominal 2680 5/27/2002 /* Convert to absolute temperature */ double Kelvin = (TEMP2_Voltage - TEMP1_Voltage) * K_Per_Temp21_Delta_V; /* Optional conversion to commonly used temperature units */ double Centigrade = Kelvin - 273.15; double Fahrenheit = (Centigrade * 9.0 / 5.0) + 32;
2.10) 测量外部电压输入AUX1、AUX2、BAT1、BAT2和温度
表9. ADC测量命令序列DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in |
T MB |
Measure BAT1/4, BAT2/4, AUX1, AUX2, TEMP1, TEMP2 with 12-bit resolution and 3.5µs conversion rate | 0x0040 0x2f01 0x8005 0x0000 0x8006 0x0000 0x8007 0x0000 0x8008 0x0000 0x8009 0x0000 0x800a 0x0000 |
T W AC 2f01 |
Trigger ADC scan of BAT1-2, AUX1-2, TEMP1-2; ADC control word 0x2f01 means: ADC_control_wr_demand_scan ADC_control_ AD1011 /* measure AUX1 etc. */ ADC_control_RES11 /* 12-bit resolution */ ADC_control_AVG00 /* no averaging */ ADC_control_CNR00 /* conversion rate 3.5µs */ ADC_control_RFV /* RFV=1: VREF=2.5V */ |
0x0040 0x2f01 |
T R B1 |
Read BAT1 result BAT1 _code | 0x8005 0x0000 |
T R B2 |
Read BAT2 result BAT2_code | 0x8006 0x0000 |
T R A1 |
Read AUX1 result AUX1 _code | 0x8007 0x0000 |
T R A2 |
Read AUX2 result AUX2 _code | 0x8008 0x0000 |
T R T1 |
Read TEMP1 result TEMP1 _code | 0x8009 0x0000 |
T R T2 |
Read TEMP2 result TEMP2 _code | 0x800a 0x0000 |
3) 触摸屏实例
下面的例子解释了怎样使用DEMO1234.EXE程序来获得触摸屏数据。3.1) 低成本商用触摸屏
在互联网上搜索"PDA Digitizer/Glasstop",寻找合适的替代触摸屏。高清触摸屏玻璃的价格范围在50美元至10美元之间,价格取决于型号以及玻璃是否全部贴在显示屏上。3.2) 连接触摸屏和评估板
MAX1234评估板提供突出插头H5/H6来连接10mm柔性电缆或者长度更短的电缆。H6连接器的间距是0.5mm,比实际触摸屏柔性电缆间距更精细。把柔性电缆插入H6,上锁,选择位于四条柔性电缆中每一电缆中心位置的H5引脚。跳接器连接H5和标有U1的X+、Y+、X-以及Y-测试点。3.3) 检验触摸屏的连接
第一次连接触摸屏时,通过下面的步骤来验证X和Y连接是否正确。可以有几个触摸屏交叉连接,但大部分不会正常工作。在这些例子中,我们假设X- = left,X+ = right,Y- = top,Y+ = bottom。表10. 触摸屏物理连接验证命令序列
DEMO1234 Command |
Action | SPI data in |
Verification |
Connect DVM to X+/GND | |||
T MD |
No measurement; drive Y+,Y- | 0x0040 0x3701 |
|
Touch top left | X+ = approx. Y- | ||
Touch top right | X+ = approx. Y- | ||
Touch bottom left | X+ = approx. Y+ | ||
Touch bottom right | X+ = approx. Y+ | ||
Connect DVM to Y+/GND | |||
T ME |
No measurement; drive X+,X- | 0x0040 0x3b01 |
|
Touch top left | Y+ = approx. X- | ||
Touch top right | Y+ = approx. X+ | ||
Touch bottom left | Y+ = approx. X- | ||
Touch bottom right | Y+ = approx. X+ |
表11. 纠正触摸屏连接问题
Symptom | Correction |
Touch coordinates are mirrored top-to-bottom | Swap the Y+ and Y- connections |
Touch coordinates are mirrored left-to-right | Swap the X+ and X- connections |
Touch coordinates are rotated 180 degrees | Swap the X+ and X- connections, and swap the Y+ and Y- connections |
Touch coordinates are mirrored diagonally | Swap the X+ and Y+ connections, and swap the X- and Y- connections |
Touch coordinates do not seem to track, and the distortion is not a simple flip/rotate/mirror transformation | Swap the X+ and Y+ connections; if distortion persists, swap the X+ and Y- connections; if distortion still persists, disconnect touch screen and use DVM to verify X+ to X- resistance and Y+ to Y- resistance; verify with no touch X+ and X- are isolated from Y+ and Y- |
3.4) 检测触摸屏的操作:根据需要扫描
在配置MAX1234检测触摸屏操作,根据需要数字化接触屏的位置时,写入寄存器0x40 (ADC控制),其PENSTS=0,ADSTS=0 (请参考MAX1233/MAX1234数据资料的表6)。读取寄存器0x00 (X轴)后,检测到后续的触摸屏操作时,/PENIRQ信号锁存至低电平,在写入ADC控制寄存器测量X、Y轴之前,保持低电平。表12. 触摸屏检测命令序列:根据需要扫描
DEMO1234 Command |
Action | SPI data in |
Verification |
T W AC 0b01 |
Demand scan | 0x0040 0x0b01 |
|
T R AX |
Read conversion result register X | 0x8000 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 | |
Touch the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 | |
Touch and hold the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
Release the touch screen | |||
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 0 | |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b01 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
P R 6 |
Read PENIRQ-bar pin status | PENIRQ = 1 |
3.5) 检测触摸屏操作:自动扫描
在检测触摸屏操作,配置MAX1234,自动数字化触摸屏的接触位置时,写入寄存器0x40 (ADC控制),其PENSTS=1,ADSTS=0 (请参考MAX1233/MAX1234数据资料的表6)。第一次接触屏幕时,/PENIRQ信号暂时变为低电平,并在读取X寄存器之前不会变化。表13. 触摸屏检测命令序列:自动扫描
DEMO1234 Command |
Action | SPI data in |
Verification |
Optional: connect oscilloscope to PENIRQ-bar | |||
I C 1 3 |
Configure PENIRQ-bar pulse accumulator: falling-edge trigger | ||
I 0 1 |
Reset the pulse accumulator | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count = 0 | |
T W AC 8bff |
Wait for touch, then scan X,Y,Z1,Z2 | 0x0040 0x8bff |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
|
Touch the touch screen | PENIRQ pulse | ||
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | count has increased | |
T R P |
Read X,Y,Z1,Z2 conversion results | 0x8000 0x0000 0x8001 0x0000 0x8002 0x0000 0x8003 0x0000 |
4) 键盘和通用输入/输出引脚
下面的例子介绍了怎样使用DEMO1234.EXE程序来扫描键盘,怎样使用GPIO键盘扫描引脚。4.1) 配置键盘和GPIO引脚
GPIO控制寄存器将每个C1–C4和R1–R4引脚分别配置为输入、输出或者是键盘的一部分(请参考MAX1233/MAX1234数据资料的表26和表27)。此外,写入GPIO上拉禁止寄存器,将输出引脚配置为开漏输出。表14. 键盘和GPIO配置实例
DEMO1234 Command |
Action | SPI data in |
T W GC FFFF |
Keypad: none; GPIO outputs: C4,C3,C2,C1,R4,R3,R2,R1; GPIO inputs: none |
0x004f 0xffff |
T W GC FF00 |
Keypad: none; GPIO outputs: none; GPIO inputs: C4,C3,C2,C1,R4,R3,R2,R1 |
0x004f 0xff00 |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
T W GC C8C0 |
Keypad: (C2,C1) x (R3,R2,R1); GPIO outputs: C4,C3; GPIO input: R4 |
0x004f 0xc8c0 |
T W GP 4000 |
GPIO pullup disable: C3 | 0x004e 0x4000 |
4.2) 读写GPIO引脚
GPIO数据寄存器读取GPIO输入引脚,写入GPIO输出引脚。注意:在这些例子中,C3、C4和R4是引脚名称,而不是元件名称。表15. GPIO实例
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC C8C0 |
Keypad: (C2,C1) x (R3,R2,R1); GPIO outputs: C4,C3; GPIO input: R4 |
0x004f 0xc8c0 |
|
T W GP 4000 |
GPIO pullup disable: C3 | 0x004e 0x4000 |
|
Connect external resistor between C3 pin and DVDD | |||
Connect DVM to C4 pin | |||
T W GD 8000 |
GPIO write C4 = 1 | 0x000f 0x8000 |
C4 pin = high |
T W GD 0000 |
GPIO write C4 = 0 | 0x000f 0x0000 |
C4 pin = low |
T W GD 8000 |
GPIO write C4 = 1 | 0x000f 0x8000 |
C4 pin = high |
T W GD 0000 |
GPIO write C4 = 0 | 0x000f 0x0000 |
C4 pin = low |
Connect DVM to C3 pin | |||
T W GD 4000 |
GPIO write C3 = 1 | 0x000f 0x4000 |
C3 pin = high |
T W GD 0000 |
GPIO write C3 = 0 | 0x000f 0x0000 |
C3 pin = low |
T W GD 4000 |
GPIO write C3 = 1 | 0x000f 0x4000 |
C3 pin = high |
T W GD 0000 |
GPIO write C3 = 0 | 0x000f 0x0000 |
C3 pin = low |
Connect R4 pin to DVDD | |||
T R GD |
GPIO read | 0x800f 0x0000 |
Buffer = 0x0800 |
Connect R4 pin to GND | |||
T R GD |
GPIO read | 0x800f 0x0000 |
Buffer = 0x0000 |
4.3) 检测按键:自动扫描
可以配置键盘控制寄存器在探测到有按键按下时,自动扫描键盘。表16. 按键命令序列:自动扫描
DEMO1234 Command |
Action | SPI data in |
Verification |
Optional: connect oscilloscope to KEYIRQ-bar | |||
I C 0 3 |
Configure KEYIRQ-bar pulse accumulator: falling-edge trigger | ||
I 0 0 |
Reset the pulse accumulator | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count = 0 | |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
Press and release R1C1 (key "1") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0020 = R2C2 key |
Press and release R3C2 (key "8") | KEYIRQ pulse | ||
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | count has increased | |
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0040 = R3C2 key |
4.4) 从键盘中屏蔽单个按键
使用键盘屏蔽寄存器和键盘2结果寄存器来屏蔽每个按键。屏蔽掉的按键被扫描至KPD寄存器,但是不在键盘2结果寄存器中报告。表17. 按键命令序列:屏蔽单个按键
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
T W KM 0020 |
Mask only R2C2 key | 0x0050 0x0020 |
|
Press and release R1C1 (key "1") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0020 = R2C2 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0000 = no key |
Press and release R3C2 (key "8") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0040 = R3C2 key |
T R K2 |
Read masked keypad result | 0x8011 0x0000 |
0x0040 = R3C2 key |
4.5) 从键盘中屏蔽一列
使用键盘列寄存器来屏蔽所有列。不扫描屏蔽列,因此,KPD寄存器不会探测这些列中的按键。表18. 按键命令序列:屏蔽键盘的一列
DEMO1234 Command |
Action | SPI data in |
Verification |
T W GC 0000 |
Keypad: (C4,C3,C2,C1) x (R4,R3,R2,R1); GPIO outputs: none; GPIO inputs: none |
0x004f 0x0000 |
|
T W KC bf00 |
Wait for keypress; maximum debounce and hold times |
0x0041 0xbf00 |
|
T W KK 2000 |
Mask entire C2 column | 0x0051 0x2000 |
|
Press and release R1C1 (key "1") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0001 = R1C1 key |
Press and release R2C2 (key "5") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
(previous value) |
Press and release R3C2 (key "8") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
(previous value) |
Press and release R2C3 (key "6") | |||
T R KB |
Read raw keypad result | 0x8004 0x0000 |
0x0200 = R2C3 key |
5) 电源管理
表19. 关断命令DEMO1234 Command |
Action | SPI data in |
Verification |
T W AC C000 |
Power off ADC | 0x0040 0xc000 |
— |
T W AC 0300 |
Power off internal reference | 0x0040 0x0300 |
REF = not driven |
T W DC 8000 |
Disable DAC | 0x0042 0x8000 |
DACOUT = 0.0V |
T W KC C000 |
Power off keypad | 0x0041 0xc000 |
— |
6) 菜单系统
全部源代码实现下面的控制台菜单系统,它连接至MINIQUSB+模块。CmodComm测试程序主菜单—在连接前
A) adjust timing parameters
L) CmodLog... functions
C) connect
D) Debug Messages
X) exit
对C (连接)命令的响应
C
Hardware supports optimized native SMBus commands.
Board connected.
Got board banner: Maxim MINIQUSB V01.05.41 >
Firmware version is OK.
(configured for SPI auto-CS 4-byte mode) (SCLK=2MHz) ...
主菜单—连接后有效
T) Test the device
8) CmodP8Bus... functions
A) adjust timing parameters
L) CmodLog... functions
P) CmodPin... functions
S) CmodSpi... functions
M) CmodSMBus... functions
$) CmodCommStringWrite list of hex codes
R) CmodBoardReset
D) Disconnect
测试菜单命令—连接后有效
R) Read register
W) Write register
M0) measure no measurement; configure reference
M1) measure X,Y
M2) measure X,Y,Z1,Z2
M3) measure X
M4) measure Y
M5) measure Z1,Z2
M6) measure BAT1/4
M7) measure BAT2/4
M8) measure AUX1
M9) measure AUX2
MA) measure TEMP1
MB) measure BAT1/4,BAT2/4,AUX1,AUX2,TEMP1,TEMP2
MC) measure TEMP1,TEMP2
MD) no measurement; drive Y+,Y-
ME) no measurement; drive X+,X-
MF) no measurement; drive Y+,X-
.) Exit this menu
6.1) 寄存器读/写命令
表20. 读取寄存器助记符DEMO1234 Command |
Mnemonic | SPI data in |
T R A1 |
Test Read AUX1 register | 0x8007 0x0000 |
T R A2 |
Test Read AUX2 register | 0x8008 0x0000 |
T R AC |
Test Read ADC_control register | 0x8040 0x0000 |
T R AX |
Test Read X register | 0x8000 0x0000 |
T R AY |
Test Read Y register | 0x8001 0x0000 |
T R AZ1 |
Test Read Z1 register | 0x8002 0x0000 |
T R AZ2 |
Test Read Z2 register | 0x8003 0x0000 |
T R B1 |
Test Read BAT1 register | 0x8005 0x0000 |
T R B2 |
Test Read BAT2 register | 0x8006 0x0000 |
T R DC |
Test Read DAC_control register | 0x8042 0x0000 |
T R DD |
Test Read DAC_data register | 0x800b 0x0000 |
T R GC |
Test Read GPIO_control register | 0x804f 0x0000 |
T R GD |
Test Read GPIO_data register | 0x800f 0x0000 |
T R GP |
Test Read GPIO_pullup register | 0x804e 0x0000 |
T R K1 |
Test Read KPDATA1 register | 0x8010 0x0000 |
T R K2 |
Test Read KPDATA2 register | 0x8011 0x0000 |
T R KB |
Test Read KPD register | 0x8004 0x0000 |
T R KC |
Test Read KEY_control register | 0x8041 0x0000 |
T R KK |
Test Read KPCOLMASK register | 0x8051 0x0000 |
T R KM |
Test Read KPKEYMASK register | 0x8050 0x0000 |
T R T1 |
Test Read TEMP1 register | 0x8009 0x0000 |
T R T2 |
Test Read TEMP2 register | 0x800a 0x0000 |
表21. 写入寄存器助记符
DEMO1234 Command |
Mnemonic | SPI data in |
T W AC hexValue |
Test Write ADC_control register | 0x0040 hexValue |
T W DC hexValue |
Test Write DAC_control register | 0x0042 hexValue |
T W DD hexValue |
Test Write DAC_data register | 0x000b hexValue |
T W GC hexValue |
Test Write GPIO_control register | 0x004f hexValue |
T W GD hexValue |
Test Write GPIO_data register | 0x000f hexValue |
T W GP hexValue |
Test Write GPIO_pullup register | 0x004e hexValue |
T W KC hexValue |
Test Write KEY_control register | 0x0041 hexValue |
T W KK hexValue |
Test Write KPCOLMASK register | 0x0051 hexValue |
T W KM hexValue |
Test Write KPKEYMASK register | 0x0050 hexValue |
表22. 触摸屏测量命令序列
DEMO1234 Command |
Action (Triggered by A/D3210 Bits) | SPI data in Sequence |
T M1 |
Measure X,Y | 0x0040 0x07010x8000 0x00000x8001 0x0000 |
T M2 |
Measure X,Y,Z1,Z2 | 0x0040 0x0b010x8000 0x00000x8001 0x00000x8002 0x00000x8003 0x0000 |
T M3 |
Measure X | 0x0040 0x0f010x8000 0x0000 |
T M4 |
Measure Y | 0x0040 0x13010x8001 0x0000 |
T M5 |
Measure Z1,Z2 | 0x0040 0x17010x8002 0x00000x8003 0x0000 |
T MD |
No measurement; drive Y+,Y- | 0x0040 0x3701 |
T ME |
No measurement; drive X+,X- | 0x0040 0x3b01 |
T MF |
No measurement; drive Y+,X- | 0x0040 0x3f01 |
6.2) 中断和状态引脚命令
表23. 引脚状态读取命令DEMO1234 Command |
Action | SPI data in |
P R 5 |
Read KEYIRQ-bar pin status | N/A |
I C 0 3 |
Enable KEYIRQ-bar falling-edge trigger pulse accumulator | N/A |
I C 0 1 |
Enable KEYIRQ-bar rising-edge trigger pulse accumulator | N/A |
I C 0 0 |
Disable KEYIRQ-bar pulse accumulator | N/A |
I R 0 |
Read the number of times KEYIRQ-bar has pulsed low | N/A |
I 0 0 |
Clear the KEYIRQ-bar pulse accumulator | N/A |
P R 6 |
Read PENIRQ-bar pin status | N/A |
I C 1 3 |
Enable PENIRQ-bar falling-edge trigger pulse accumulator | N/A |
I C 1 1 |
Enable PENIRQ-bar rising-edge trigger pulse accumulator | N/A |
I C 1 0 |
Disable PENIRQ-bar pulse accumulator | N/A |
I R 1 |
Read the number of times PENIRQ-bar has pulsed low | N/A |
I 0 1 |
Clear the PENIRQ-bar pulse accumulator | N/A |
P R 7 |
Read BUSY-bar pin status | N/A |
6.3) 加入到更新后的MINIQUSB+固件中的命令
表24. 更新后MINIQUSB+固件01.05.40支持的SPI命令DEMO1234 Command |
Action | CPOL | CPHA | CS-Bar Control | AF Length |
S C L0 |
Configure SPI for CPOL=0 | 0 | — | GPIO-K9 | 1 byte |
S C L1 |
Configure SPI for CPOL=1 | 1 | — | GPIO-K9 | 1 byte |
S C A0 |
Configure SPI for CPHA=0 | — | 0 | GPIO-K9 | 1 byte |
S C A1 |
Configure SPI for CPHA=1 | — | 1 | GPIO-K9 | 1 byte |
S C C0 |
Configure SPI for 8-bit | — | — | GPIO-K9 | 1 byte |
S C C1 |
Configure SPI for 8-bit auto-CS-bar | — | — | Automatic | 1 byte |
S C C2 |
Configure SPI for 16-bit auto-CS-bar | — | — | Automatic | 2 bytes |
S C C3 |
Configure SPI for 24-bit auto-CS-bar | — | — | Automatic | 3 bytes |
S C C4 |
Configure SPI for 32-bit auto-CS-bar | — | — | Automatic | 4 bytes |
$ 2 AE 00 |
Configure SPI for 8-bit | 0 | 0 | GPIO-K9 | 1 byte |
$ 2 AE 01 |
Configure SPI for 8-bit | 0 | 1 | GPIO-K9 | 1 byte |
$ 2 AE 02 |
Configure SPI for 8-bit | 1 | 0 | GPIO-K9 | 1 byte |
$ 2 AE 03 |
Configure SPI for 8-bit | 1 | 1 | GPIO-K9 | 1 byte |
$ 2 AE 08 |
Configure SPI for 8-bit auto-CS-bar | 0 | 0 | Automatic | 1 byte |
$ 2 AE 09 |
Configure SPI for 8-bit auto-CS-bar | 0 | 1 | Automatic | 1 byte |
$ 2 AE 0A |
Configure SPI for 8-bit auto-CS-bar | 1 | 0 | Automatic | 1 byte |
$ 2 AE 0B |
Configure SPI for 8-bit auto-CS-bar | 1 | 1 | Automatic | 1 byte |
$ 2 AE 18 |
Configure SPI for 16-bit auto-CS-bar | 0 | 0 | Automatic | 2 bytes |
$ 2 AE 19 |
Configure SPI for 16-bit auto-CS-bar | 0 | 1 | Automatic | 2 bytes |
$ 2 AE 1A |
Configure SPI for 16-bit auto-CS-bar | 1 | 0 | Automatic | 2 bytes |
$ 2 AE 1B |
Configure SPI for 16-bit auto-CS-bar | 1 | 1 | Automatic | 2 bytes |
$ 2 AE 28 |
Configure SPI for 24-bit auto-CS-bar | 0 | 0 | Automatic | 3 bytes |
$ 2 AE 29 |
Configure SPI for 24-bit auto-CS-bar | 0 | 1 | Automatic | 3 bytes |
$ 2 AE 2A |
Configure SPI for 24-bit auto-CS-bar | 1 | 0 | Automatic | 3 bytes |
$ 2 AE 2B |
Configure SPI for 24-bit auto-CS-bar | 1 | 1 | Automatic | 3 bytes |
$ 2 AE 38 |
Configure SPI for 32-bit auto-CS-bar | 0 | 0 | Automatic | 4 bytes |
$ 2 AE 39 |
Configure SPI for 32-bit auto-CS-bar | 0 | 1 | Automatic | 4 bytes |
$ 2 AE 3A |
Configure SPI for 32-bit auto-CS-bar | 1 | 0 | Automatic | 4 bytes |
$ 2 AE 3B |
Configure SPI for 32-bit auto-CS-bar | 1 | 1 | Automatic | 4 bytes |
$ 2 AF xx |
Perform an 8-bit SPI transfer (CS-bar = GPIO or auto-CS-bar = 1-byte) | — | — | — | 1 byte |
$ 3 AF xx xx |
Perform a 16-bit SPI transfer (requires auto-CS-bar = 2-byte mode) | — | — | — | 2 bytes |
$ 4 AF xx xx xx |
Perform a 24-bit SPI transfer (requires auto-CS-bar = 3-byte mode) | — | — | — | 3 bytes |
$ 5 AF xx xx xx xx |
Perform a 32-bit SPI transfer (requires auto-CS-bar = 4-byte mode) | — | — | — | 4 bytes |
$ 2 F9 0 |
Drive CS-bar pin low | — | — | GPIO-K9 | — |
$ 2 F9 1 |
Drive CS-bar pin high | — | — | GPIO-K9 | — |
表25. 更新后MINIQUSB+固件01.05.41中的中断脉冲累加器命令
DEMO1234 Command |
Action | Int | GPIO Input | Firmware Command |
$ 2 C3 00 |
Query which of the C3 commands are supported; the return value is a 2-byte bitmap of commands C300 to C30F, msb first | — | — | C3 00 |
I Q 0 |
Query configuration of pulse accumulator | INT0 | GPIO-K5 | C3 01 00 |
I Q 1 |
Query configuration of pulse accumulator | INT1 | GPIO-K6 | C3 01 01 |
I Q 2 |
Query configuration of pulse accumulator | INT2 | GPIO-K7 | C3 01 02 |
I Q 3 |
Query configuration of pulse accumulator | INT3 | GPIO-K8 | C3 01 03 |
I C 0 0 |
Configure pulse accumulator: disable interrupt | INT0 | GPIO-K5 | C3 02 00 00 |
I C 1 0 |
Configure pulse accumulator: disable interrupt | INT1 | GPIO-K6 | C3 02 01 00 |
I C 2 0 |
Configure pulse accumulator: disable interrupt | INT2 | GPIO-K7 | C3 02 02 00 |
I C 3 0 |
Configure pulse accumulator: disable interrupt | INT3 | GPIO-K8 | C3 02 03 00 |
I C 0 1 |
Configure pulse accumulator: rising-edge trigger | INT0 | GPIO-K5 | C3 02 00 01 |
I C 1 1 |
Configure pulse accumulator: rising-edge trigger | INT1 | GPIO-K6 | C3 02 01 01 |
I C 2 1 |
Configure pulse accumulator: rising-edge trigger | INT2 | GPIO-K7 | C3 02 02 01 |
I C 3 1 |
Configure pulse accumulator: rising-edge trigger | INT3 | GPIO-K8 | C3 02 03 01 |
I C 0 3 |
Configure pulse accumulator: falling-edge trigger | INT0 | GPIO-K5 | C3 02 00 03 |
I C 1 3 |
Configure pulse accumulator: falling-edge trigger | INT1 | GPIO-K6 | C3 02 01 03 |
I C 2 3 |
Configure pulse accumulator: falling-edge trigger | INT2 | GPIO-K7 | C3 02 02 03 |
I C 3 3 |
Configure pulse accumulator: falling-edge trigger | INT3 | GPIO-K8 | C3 02 03 03 |
I R 0 |
Read pulse accumulator | INT0 | GPIO-K5 | C3 03 00 |
I R 1 |
Read pulse accumulator | INT1 | GPIO-K6 | C3 03 01 |
I R 2 |
Read pulse accumulator | INT2 | GPIO-K7 | C3 03 02 |
I R 3 |
Read pulse accumulator | INT3 | GPIO-K8 | C3 03 03 |
I 0 0 |
Clear pulse accumulator | INT0 | GPIO-K5 | C3 04 00 |
I 0 1 |
Clear pulse accumulator | INT1 | GPIO-K6 | C3 04 01 |
I 0 2 |
Clear pulse accumulator | INT2 | GPIO-K7 | C3 04 02 |
I 0 3 |
Clear pulse accumulator | INT3 | GPIO-K8 | C3 04 03 |
I S 0 xx |
Set pulse accumulator count xx = 0 to 255 | INT0 | GPIO-K5 | C3 05 00 xx |
I S 1 xx |
Set pulse accumulator count xx = 0 to 255 | INT1 | GPIO-K6 | C3 05 01 xx |
I S 2 xx |
Set pulse accumulator count xx = 0 to 255 | INT2 | GPIO-K7 | C3 05 02 xx |
I S 3 xx |
Set pulse accumulator count xx = 0 to 255 | INT3 | GPIO-K8 | C3 05 03 xx |
评论
查看更多