目前使用的是T1-2S模组,SDK:T1-CHL_TuyaOS-3.11.35。使用tkl_adc.c 中的测试代码:tkl_adc_unit_test。 模块将ADC接地之后,读取的ADC电压还有3200mV。看T1-2S-NL的规格书显示,该模组的ADC-P1-Pin17. T1-U模组的ADC-P20-Pin13。这个ADC引脚对应的ADC通道号在哪里可以查到呢?
T1-2S 模组的ADC 通道是多少呢
Re: T1-2S 模组的ADC 通道是多少呢
有大佬帮忙看下这个问题吗?模块也换过了,上电测试都是3200mV左右。ADC脚是接到GND的。
Code: Select all
[01-01 00:00:05 ty D][437b][netcfg_module.c:116] start 0x10020 ret:0
[01-01 00:00:05 ty D][437b][pegasus_netcfg.c:20] pegasus netcfg start
[01-01 00:00:05 ty D][437b][wifi_netcfg_frame_transporter.c:285] ----netcfgType:0x10080
[01-01 00:00:05 ty D][437b][wifi_netcfg_frame_sniffer.c:45] ----register netcfgType:0x10080
[01-01 00:00:05 ty D][437b][wifix_thread_cb: volt 3213
_netcfg_frame_sniffer.c:104] ----start netcfgType:0x10080
[01-01 00:00:05 ty D][437b][wifi_netcfg_frame_transporter.c:332] ----start netcfgType:0x10080
[01-01 00:00:05 ty D][437b][netcfg_module.c:116] start 0x10080 ret:0
x_thread_cb: volt 3211
x_thread_cb: volt 3195
x_thread_cb: volt 3210
[01-01 00:00:07 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3130
x_thread_cb: volt 3211
x_thread_cb: volt 3204
x_thread_cb: volt 3215
[01-01 00:00:09 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3210
x_thread_cb: volt 3212
x_thread_cb: volt 3206
x_thread_cb: volt 3215
[01-01 00:00:11 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3213
x_thread_cb: volt 3214
adc ddev_open error:1
x_thread_cb: volt 3214
mm_reset MM_GOING_TO_IDLE->MM_IDLE
x_thread_cb: volt 3216
[01-01 00:00:13 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3214
cal_bias!
cal dpll!
temp_code:-39 - adc_code:399 - adc_trend:[15]:243->[5]:343
x_thread_cb: volt 3154
x_thread_cb: volt 3217
cal_bias!
cal dpll!
temp_code:37 - adc_code:236 - adc_trend:[5]:343->[15]:243
x_thread_cb: volt 3209
[01-01 00:00:15 ty D][4369][tuya_devos_health.c:71] feed watchdog
[01-01 00:00:15 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3213
x_thread_cb: volt 3213
x_thread_cb: volt 3213
temp_code:38 - adc_code:235 - adc_trend:[15]:243->[16]:233
x_thread_cb: volt 3213
[01-01 00:00:17 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3215
x_thread_cb: volt 3213
x_thread_cb: volt 3216
x_thread_cb: volt 3213
[01-01 00:00:19 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3209
x_thread_cb: volt 3215
x_thread_cb: volt 3214
x_thread_cb: volt 3213
[01-01 00:00:21 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3214
x_thread_cb: volt 3215
x_thread_cb: volt 3216
x_thread_cb: volt 3209
[01-01 00:00:23 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3215
x_thread_cb: volt 3215
x_thread_cb: volt 3213
x_thread_cb: volt 3215
[01-01 00:00:25 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3213
x_thread_cb: volt 3210
x_thread_cb: volt 3213
x_thread_cb: volt 3215
[01-01 00:00:27 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3211
x_thread_cb: volt 3210
x_thread_cb: volt 3213
x_thread_cb: volt 3213
[01-01 00:00:29 ty D][4306][app_led.c:87] network_is_connected: 0
x_thread_cb: volt 3213
x_thread_cb: volt 3216
x_thread_cb: volt 3215Re: T1-2S 模组的ADC 通道是多少呢
映射链路已全部确认,信息足够,输出结论。
结论:T1 的引脚→ADC 通道映射表在 vendor/T1/tuyaos/tuyaos_adapter/src/driver/tkl_pinmux.c 的 tkl_io_pin_to_func()(tkl_pinmux.c:48);T1-2S 的 ADC 脚 P1 对应涂鸦 ADC 通道 4。你接地后仍读到 3200mV,是因为 tkl_adc_unit_test 里写死采样 BIT(2)(通道 2 = P20,那是 T1-U 的 ADC 脚),采的根不是 P1,浮空脚读出乱值。
T1 平台 ADC 引脚-通道对照(出处 tkl_pinmux.c:48-62)
| 引脚 | 涂鸦 ADC 通道 | 备注 |
|---|---|---|
| P26 | 0 | |
| P24 | 1 | |
| P20 | 2 | T1-U 的 ADC 脚 |
| P28 | 3 | |
| P1 | 4 | T1-2S 的 ADC 脚 |
| P10 | 5 |
怎么改
把测试代码里的 ch_data |= BIT(2); 改成 BIT(4) 即可,接地后应读到接近 0mV。完整片段:
Code: Select all
TUYA_ADC_BASE_CFG_T adc_cfg;
INT32_T volt = 0;
adc_cfg.ch_list.data = BIT(4); // T1-2S: P1 -> 通道 4
adc_cfg.ch_nums = 1;
adc_cfg.type = TUYA_ADC_INNER_SAMPLE_VOL;
adc_cfg.width = 12;
adc_cfg.mode = TUYA_ADC_CONTINUOUS;
adc_cfg.conv_cnt = 1;
tkl_adc_init(TUYA_ADC_NUM_0, &adc_cfg);
tkl_adc_read_voltage(TUYA_ADC_NUM_0, &volt, 1); // 接地约 0mV
tkl_adc_deinit(TUYA_ADC_NUM_0);不建议写死通道号,直接用接口按引脚查询(产测组件 ty_gfw_testsuites_adc_test.c:48 就是这么写的):
Code: Select all
UINT8_T ch = tkl_io_pin_to_func(TUYA_IO_PIN_1, TUYA_IO_TYPE_ADC); // 返回 4补充说明
- 底层 SARADC 硬件通道 = 涂鸦通道 + 1(tkl_adc.c:206
adc_desc.channel = ch_id + 1),不过用 tal/tkl 接口时无需关心 - T1 共 6 个 ADC 通道、12bit、参考电压 3600mV(tkl_adc.c:13-16)
- 量程切换:
tkl_adc_ioctl传 0 关内阻(量程 0-1.1V)、1 开内阻(量程 0-3.0V),见 ty_gfw_testsuites_adc_test.c:120 - 该表是芯片级的;具体哪几个脚在模组上引出,以模组规格书为准(T1-2S 只引出 P1)
以上内容由 AI 自动分析生成,如有疑问请回复补充。