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.

[参考译文] ADS7142:无法获得正确的转换结果。

Guru**** 2537140 points
Other Parts Discussed in Thread: ADS7142

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/879537/ads7142-cannot-get-correct-conversion-result

器件型号:ADS7142

我正在使用  具有  I2C 的北欧平台使用 ADS7142器件。  

这是我的配置:

sbac201a  。中使用 ADS7142RegisterMap.h 的头文件

IIC 频率为400K

静态 uint8_t const offset_cal[]={single_REG_WRITE、ADS7142_REG_OFFSET_CAL、ADS7142_VAL_TRIG_OFFCAL};
静态 uint8_t const CHANNEL_INPUT_cfg[3]={SINGLE_REG_WRITE、ADS7142_REG_CHANNEL_INPUT_CFG、ADS7142_VAL_CHANNEL_INPUT_CFG_1_CHANNEL_伪 差分};
静态 uint8_t const operation_mode_SEL[]={single_REG_WRITE、ADS7142_REG_OPMODE_SEL、ADS7142_VAL_OPMODE_SEL_I2C_CMD_MODE_W_AUTO_SEQ_EN};

静态 uint8_t const auto_seq_channel_cfg[]={single_REG_WRITE、ADS7142_REG_AUTO_SEQ_CHEN、ADS7142_VAL_AUTO_SEQ_CHENAUTO_SEQ_CH0};

静态 uint8_t const start_convertion_cfg[]={single_REG_WRITE、ADS7142_REG_start_sequence、ADS7142_VAL_START_sequence};//开始
静态 uint8_t const abort_convertion_cfg[]={single_REG_WRITE、ADS7142_REG_ABORT_sequence、ADS7142_VAL_ABORT_sequence};//中止

/ /
app_twi_transfer_t const ads7142_init_param[]={
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、ABORT_ENABLE_cfg、sizeof (ABORT_ENABLE_cfg)、0)、
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、OFFSET_cal、sizeof (OFFSET_cal)、0)、
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、CHANGE_INPUT_cfg、sizeof (CHANGE_INPUT_cfg)、0)、
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、OPERAL_MODE_SEL、sizeof (OPERAT_MODE_SEL)、0)、
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、auto_Seq_channel_cfg、sizeof (auto_Seq_channel_cfg)、0)、
APP_TWI_WRITE (ADS7142_SLAVE_ADDR、START_conversion _cfg、sizeof (start_conversion _cfg)、0)、
};

nrf_drv_gpioote_in_config_t ads_config = GPIOTE_CONFIG_IN_SENSE_HITOLO (真);  

nrf_drv_gpioT_in_init (ADS7142_Busy_PIN、&ADS_CONFIG、Mg_ADC_READ_handler);    //and Busy/RDY PIN, 下降沿触发 中断。
Mg_gpioT_enable ()

静态空 read_ads7142_CB_handler (ret_code_t 结果、void* p_user_data){
nrf_log_info ("aaaaaaaaaaa\n");
for (;i < 4;i++){
nrf_log_info ("adc:%#x\n"、m_adc_buffer[i]);

void ads7142_data_read (void){
静态 app_twi_transfer_t const 传输[]={
ADS7142_Read (ADS7142_SLAVE_ADDR、m_ADC_buffer、4)、
};
静态 app_twi_transaction_t const 事务={
.callback = read_ads7142_CB_handler、
.p_user_data =空、
.p_transfers =传输、
.number_of_transfers = sizeof (transfers)/sizeof (transfers [0])};

app_error_check (app_twi_schedule (&m_twi_ads7142、事务));

我可以 正确读取寄存器值。

完成此配置后、读取 ADS7142_SLAVE_ADDR 4个字节。  

无论我 是启动转换 cfg 还是 中止转换 cfg、都不会触发我的中断。

手动调用  ads7142_data_read() 读取转换功能四次,获取结果。

:info:busy pin:0:info:aaaaaaaaaaa
信息:ADC:0xe0
:info:adc:0x40
:info:adc:0xFF
:info:adc:0x10
:info:busy pin:0:info:aaaaaaaaaaa
:info:adc:0xee
:info:adc:0x40
:info:adc:0xeb
信息:ADC:0xe0
:info:busy pin:0:info:aaaaaaaaaaa
:info:adc:0xf8
:info:adc:0
:info:adc:0xf6
信息:ADC:0xe0
:info:busy pin:0:info:aaaaaaaaaaa
:info:adc:0xf7
:info:adc:0x70
:info:adc:0xFF
:info:adc:0x50

 接收到的值一直在变化、该值太 大。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    调试代码的一种方法是在数字通信线路上使用示波器

    这将 对器件所看到的内容和发送内容进行可视检查、并可与代码中的预期内容进行比较

    示波器快照使调试和代码变得容易得多。

    我建议从手动模式开始、一个通道、然后收集数据。

    使用已知 的直流输入将输出与预期输出进行比较。

    一旦工作正常、就可以集成其他功能

    此致

    Cynthia