主题中讨论的其他器件:TIC12400
大家好、团队成员
我已经配置了 TC12400、它适用于模拟和数字输入读取。
我已将 IN0和 IN1配置为模拟输入模式、将 IN2和 IN13配置为数字输入。
我尝试将其配置为唤醒源、但只有 IN2工作、其他不工作。
1:对于 IN13 -配置与 IN2相同、但无法正常工作。 与 IN2相比、IN13需要进行的任何其他设置。
对于 IN0和 IN1 -在调试时、我发现阈值寄存器不更新0。
请提供用于唤醒功能的模拟输入寄存器设置序列。
谢谢你
桑托什
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
大家好、团队成员
我已经配置了 TC12400、它适用于模拟和数字输入读取。
我已将 IN0和 IN1配置为模拟输入模式、将 IN2和 IN13配置为数字输入。
我尝试将其配置为唤醒源、但只有 IN2工作、其他不工作。
1:对于 IN13 -配置与 IN2相同、但无法正常工作。 与 IN2相比、IN13需要进行的任何其他设置。
对于 IN0和 IN1 -在调试时、我发现阈值寄存器不更新0。
请提供用于唤醒功能的模拟输入寄存器设置序列。
谢谢你
桑托什
您好、Santosh、
一般来说、您需要始终开启和稳定 VS 和 VDD 电源。 您还需要使用 INT_EN_CFGx 寄存器启用中断生成输入、并设置将在 INT_EN_Compx 寄存器中生成中断的开关的边沿类型。
我可以帮助您配置寄存器、但我对您的配置有一些疑问。
您能否向我提供您在设置中使用的寄存器值、或回答以下问题?
到目前为止、我不知道如何为您的应用配置 INT_EN_CFGx 和 INT_EN_Compx 寄存器。 了解更多信息后、我可以提供一些特定的值。
此致、
Jonathan
这是我的配置
/* Step1:启用通道*/
/**
* IN_EN 寄存器1Bh:
*启用输入通道- 00、01、02、06、08、 13、14
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x61u;
DATA_w[2]= 0x47u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_IN_EN_R、
DATA_w);
/* Step2:电流源选择*/
/**
* CS_SELECT 1Ch:电流源/灌电流
*将所有配置为源选择[0h]
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x00u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_CS_SELECT_R、
DATA_w);
/* Step3:湿性电流配置*/
/**
* WC_CFG0寄存器1Dh:湿性电流
*配置为2mA [2h]
*
DATA_w[0]= 0x01u;
DATA_w[1]= 0x20u;
DATA_w[2]= 0x12u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_WC_CFG0_R、
DATA_w);
/**
* WC_CFG1寄存器1Eh:湿性电流
*配置为2mA [2h]
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x12u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_WC_CFG1_R、
DATA_w);
/* Step4:模式选择*/
/**
*模式寄存器32h:
*引脚00、01、08配置为模拟输入。
*所有其他引脚均配置为数字输入。
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x01u;
DATA_w[2]= 0x03u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_mode_R、
DATA_w);
/* Step5:设置设备配置*/
/**
*配置寄存器1Ah:
*将触发器设置为0 [停止器件]
* VS 比为1 -支持4.5V 至30V 的电压范围
*轮询被禁用。
* INT_CONFIG --将中断断言更改为静态
禁用* CRC
*轮询激活时间1024us [BH]
*轮询时间4ms [1h]
*
DATA_w[0]= 0x81u;
DATA_w[1]= 0x25u;
DATA_w[2]= 0x62u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_CONFIG_R、
DATA_w);
/* Step6:比较器阈值配置*/
/**
* THRES_COMP 寄存器21h:
*设置为2h -阈值电压为3V
*数字输入- 02、06、13、14
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x8Au;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_Thres_COMP_R、
DATA_w);
/* Step7:在状态变化时启用全局中断*/
/**
* INT_EN_CFG0寄存器24h:全局中断
* SSC_EN 启用开关状态变化时的中断置位[SSC]
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x04u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_INT_EN_CFG0_R、
DATA_w);
/* Step8:模拟阈值配置*/
/**
* THRES_CFG0寄存器29h:
*将 THRES0配置为~2.6V [1B9h]
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x01u;
DATA_w[2]= 0xB9u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_Thres_CFG0_R、
DATA_w);
/**
* THRES_CFG1寄存器2Ah:
*将 THRES0配置为~2.6V [1B9h]
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x01u;
DATA_w[2]= 0xB9u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_Thres_CFG1_R、
DATA_w);
/**
* TIC12400_THRESMAP_CFG0_R 寄存器2Eh:
*将模拟输入阈值配置为 THRES2
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x12u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_THRESMAP_CFG0_R、
DATA_w);
/**
* TIC12400_THRESMAP_CFG1_R 寄存器2Fh:
*将模拟输入阈值配置为 THRES2
*
DATA_w[0]= 0x00u;
DATA_w[1]= 0x00u;
DATA_w[2]= 0x12u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_THRESMAP_CFG1_R、
DATA_w);
/* Step9:中断检测配置*/
/**
* INT_EN_COMP1寄存器22h:启用中断
*设置上升沿和下降沿上的中断生成- 3h。
数字输入:02,06
*
DATA_w[0]= 0xffffff;
DATA_w[1]= 0xffffff;
DATA_w[2]= 0xffffff;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_INT_EN_COMP1_R、
DATA_w);
/**
* INT_EN_COMP2寄存器23h:启用中断
*设置上升沿和下降沿上的中断生成- 3h。
数字输入:13、14
*
DATA_w[0]= 0xffffff;
DATA_w[1]= 0xffffff;
DATA_w[2]= 0xffffff;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_INT_EN_COMP2_R、
DATA_w);
/**
* INT_EN_CFG1寄存器25h:启用中断
*设置上升沿和下降沿上的中断生成- 3h。
*模拟输入:00、01、08
*
DATA_w[0]= 0xffffff;
DATA_w[1]= 0xffffff;
DATA_w[2]= 0xffffff;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_INT_EN_CFG1_R、
DATA_w);
/* Step10:启用器件以开始操作*/
/**
*现在所有必需的设置都已完成,请启用触发器
*进行正常操作。
*
*配置寄存器1Ah:
*正常运行时将触发器设置为1。
*
DATA_w[0]= 0x81u;
DATA_w[1]= 0x2Du;
DATA_w[2]= 0x62u;
return_val |= tic12400_reg_write (
APP_TIC12400_DEVICE0、
TIC12400_CONFIG_R、
DATA_w);
/* Step11:清除中断*/
/**
*通过读取中断状态寄存器清除所有中断
*然后跳转到任务。
*
return_val |= tic12400_reg_read (
APP_TIC12400_DEVICE0、
TIC12400_INT_STAT_R、
tic12400_int_stat_r);
您的 VS 电压是多少? 它是否始终开启且稳定? =>12V。 它是稳定的。 VS1和 VS2连接到电池。
您的 VDD 电压是多少? 它是否始终开启且稳定? =>3.3V。 它是稳定的。
您的开关是否连接到 VS 或 GND? => GND
您的开关通常是打开还是关闭(输入是正常高电平还是低电平等)? =>打开
基本上、我们是在寻找上升沿、下降沿还是中断的任一沿类型? =>双边沿
您能否向我提供您在设置中使用的寄存器值、或回答以下问题? =>请参阅附件
您是在输入端拉取或灌入电流、还是两者都不是(0mA 选项)。 拉电流、2mA
您在输入端拉取或灌入了多少电流? 2mA
数字输入使用的比较器阈值电压是多少? 3V
使用的 ADC 阈值及其设置是什么? =>~2.5V
您的中断配置寄存器(0x22 - 0x28)的值是什么? 请参阅配置代码。 大多数情况下、所有输入中断都被启用。
您好、Santosh、
感谢您提供更多信息和您的特定寄存器值。 我已经查看了这些内容、并使用 TIC2400EVM-KIT 和开关板复制了测试设置。 我根据您的序列通过寄存器配置器件寄存器、我看到在两个方向上为所有启用的输入生成了一个中断。 概念中的寄存器值看起来不错。
我确实有几点看法和意见。
1) 我建议将包含 Trigger 位= 0的初始配置寄存器写入移动到第一步。 这将确保 Trigger 位为低电平并且所有寄存器都可以被正确写入。 因为这是当前的第5步、所以如果设置了触发位、您写入的前4个寄存器可能不会获取值。
[引用 userid="485933" URL"~/support/interface/f/interface-forum/998659/tic12400-q1-tic12400-wakeup-configuration-issues/3690728 #3690728"]/*步骤5:设置设备配置*/2) 此外、在配置寄存器中、您将 POLL_EN (位10)设为"1"、但您的注释显示"轮询已禁用"。 您实际上已启用轮询模式。 它应以任意方式工作、但如果您要禁用轮询模式并将湿性电流持续应用于所有输入、则需要将此位设置为"0"。
3) 在步骤8中、您要将阈值 THRES0设置为~2.6V、但我看不到您在何处使用该阈值、因为您稍后已将所有模拟输入设置为使用 THRES2阈值。 这不会伤害任何东西、但在应用中可能没有必要。
[引用 userid="485933" URL"~/support/interface/f/interface-forum/998659/tic12400-q1-tic12400-wakeup-configuration-issues/3690728 #3690728"]/* Step8:模拟阈值配置*/4) 此外、在步骤8中、您要通过 Thres_CFG1寄存器将阈值 THRES2设置为~2.6V、但您的注释会将此设置为"THRES0"。 我只是指出了注释中的一个拼写错误、寄存器配置没有问题。
[引用 userid="485933" URL"~/support/interface/f/interface-forum/998659/tic12400-q1-tic12400-wakeup-configuration-issues/3690728 #3690728"]/**在您最初的帖子中、您说它适用于模拟和数字输入读取。 这是否意味着您能够检测所有输入的开关状态变化?
更改开关以验证输入是否检测到高于或低于您配置的阈值的输入电平后、您能否监控 IN_STAT_COMP (0x05)和 INT_STAT_ADC0 (0x06)寄存器?
就我可以通过使用 EVM 板上的设置来判断、中断使能配置是正确的、我相信、如果正确检测到阈值、您还应该看到一个中断。 由于您没有看到中断、我们需要验证您的设置是否需要更改阈值、以解决 EVM 硬件和系统之间的差异。
您是否使用了示波器来验证输入上的信号、以查看实际电压电平在各种开关状态下的位置? 您是否看到接近阈值的信号? 如果是、我们可能需要调整其他设置、例如湿性电流。
此致、
Jonathan
你好、 Jonathan
感谢您提供详细的电子邮件
最初我在 步骤1中设置了配置寄存器设置、后来我通过参考一些 TIC12400使用手册将其移动。

我已经监视 IN_STAT_COMP [0x05]寄存器的数字输入 DIN02、DIN06、DIN13和 DIN14。 我看到的是 DIN02和 DIN06的寄存器更新、但不是 DIN13和 DIN14的更新。
我已经监视 了 DIN00、DIN01、DIN08的 ANA_STATx 和 IN_STAT_ADCx 寄存器。 我看到无论应用的输入是什么、ADC 原始值都会在 ANA_STATx 中更新、 但是 输入的中断在寄存 器 IN_STAT_ADCx 中没有更新、因为 当我读取它们时、THRES_CFGx 寄存 器显示0、但正如您在配置中看到的、我正在写入一些有效的 ADC 值、例如341 [对于2V]、441 [对于2.5V]。
谢谢你
桑托什
您好、Santosh、
按照方框图进行操作是可以的、也是一个好的做法。 但是、Trigger 位也是配置寄存器的一部分、必须始终将其设置为"0"、然后才能写入任何其他寄存器、这一点在该图中没有具体说明。 因此、您应始终首先写入配置寄存器、以将触发器位设置为"0"。 然后、您可以像在执行的那样在步骤5中写入寄存器的其余位。
如果在 INT_STAT_COMP 寄存器中看不到阈值发生变化、我们需要验证实际信号电平使用的是示波器、然后确定是否需要调整输入13和14的阈值。
对于模拟输入、如果您不读回正在写入的 Thres_CFGx 寄存器值、并且该值仍保留在0x00000000、则器件将永远不会生成中断、因为所有值都将高于阈值、且卡在0。
当 Trigger 位为低电平时、您应该能够对寄存器写入和读取所需的任何值。 您能否监控 INT_STAT 寄存器、以了解配置期间 SPI 或奇偶校验故障产生的任何与 SPI 相关的错误。 INT_STAT 寄存器具有 SPI_FAIL 和 PRTY_FAIL 位。 如果设置了这些寄存器、则设置这些寄存器可能会出错。
此致、
Jonathan
您好、Santosh、
感谢您确认看到 SPI 错误。 正在设置哪些位? SPI_FAIL、PRTY_FAIL 或两者都是? 您是否在任何其他寄存器上看到过这些设置?
您能否在写入/读取该寄存器时捕获 SPI 波形? 我想验证位序列是否正确、包括奇偶校验位。 我还想看看是否有任何信号完整性错误会损坏任何位。
关于 SPI 波特率、器件将以高达4Mbps 的速率运行、但这取决于良好的信号完整性。 任何反射或串扰都会影响最大速率。 如果您很容易调整此速率、则可能值得尝试降低该速率、并查看在写入 Thres_CFGx 寄存器时我们是否仍然遇到错误。
此致、
Jonathan