电路设计论坛
直播中

刘秀英

7年用户 1369经验值
私信 关注
[问答]

AD7175-8在只使能单通道的情况下,可以正确采集该通道的电压,但多通道采集一直实现不了怎么解决?

无效的 Adinit( 撤销)
{
adreset () ;
/ hal_gpio_ writipin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ; / hal_gpio_writepin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ;
延迟( 1000) ;

adgpioconfig( reg_ gpiocon) ;
//通道寄存器 10 使能AIN5连接到ADC的负输入
通道设置 () ;
//设置配置寄存器 20 单极性编码输出 外部基准电压源 缓冲器使能
asetupconfig( reg_ setupcon0, uni_ polar, ref_ buf_ en,ain_buf_ en, ref_ sel_ ext) ; 设置 adsetupconig( reg_ setupcon0, uni_ polar, ref_ buf_ en,ain_ buf_ en, ref_ sel_ ext) ;
//GPIO配置寄存器 06 控制ADC的通用I/O引脚。
// //滤波寄存器 28
/ AppilterConfig(REG_FILTCON0,SINC3MAP_DIS,ENHFILT_DIS,ENFILT_20SPS,ORDER_SINC5_SINC1,ODR_250000SPS);
// //增益寄存器 38
ADGAINCONFIG(REG_GAIN0) ;
// //失调寄存器 30
ADOFFSETConfig(REG_OFFSET0);
// //接口模式寄存器 02 使能连续读取ADC数据寄存器 使状态寄存器可以在读取时附加到数据寄存器
/ ADIFEMODECONFIG(REG_IFMODE,COTREAD_EN,DATA_STAT_DIS);
//ADC模式寄存器 01 禁用内部基准源 连续转换模式 内部振荡器 01
/ ADCModeConfig(REG_DDCMODE,REF_DIS,MODE_CONT_CONV,CLOCOCKSEL_INTOS);
/ hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; / hal_ gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set ) ;
}
//当接口同步丧失时,执行一个占用至少64个串行时钟周期
//的写操作,并使DIN处于高电平状态,可以复位整个器件,
//使ADC返回默认状态,包括寄存器内容。另外,如果CS配
//合数字接口使用,让CS变为高电平就能将数字接口设为默
//认状态,并中止任何串行接口操作。
//ID寄存器是一个只读寄存器,其值为0x3CDx
无效的 ADChannelSET( 避免)
{
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
adchannelconfig(reg_ch0,ch_en,setup0,ainpos_ain0,ainneg_ain5);
adchannelconfig(reg_ch1,ch_en,setup0,ainpos_ain1,ainneg_ain5);
ADChannel Config(REG_CH2,CH_EN,SETUP0,AINPOS_AIN2,AINNEG_AIN5);
ADChannel Config(REG_CH3,CH_EN,SETUP0,AINPOS_AIN3,AINNEG_AIN5);
ADChannel Config(REG_CH4,CH_EN,SETUP0,AINPOS_AIN4,AINNEG_AIN5);
/ADChannel Config(REG_CH5,CH_EN,SETUP0,AINPOs_AIN6,AINNEG_AIN5);
/ADChannel Config(REG_CH6,CH_EN,SETUP0,AINPOs_AIN7,AINNEG_AIN5);
/ ADChannel Config(REG_CH7,CH_EN,SETUP0,AINPOS_AIN8,AINNEG_AIN5);
/ADChannel Config(REG_CH8,CH_EN,SETUP0,AINPOS_AIN9,AINNEG_AIN5);
/ADChannel Config(REG_CH9,CH_EN,SETUP0,AINPOS_AIN10,AINNEG_AIN5);
ADChannel Config(REG_CH10,CH_EN,SETUP0,AIN11,AINNEG_AIN5);
ADChannel Config(REG_CH11,CH_EN,SETUP0,AIN12,AINNEG_AIN5);
/ADChannel Config(REG_CH12,CH_EN,SETUP0,AINPOS_AIN13,AINNEG_AIN5);
ADChannel Config(REG_CH13,CH_EN,SETUP0,AIN14,AINNEG_AIN5);
/ADChannel Config(REG_CH14,CH_EN,SETUP0,AINPOS_AINAAMAINNEG_AIN5);
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
ADReset( 撤销) 无效
{
未签名字符 ss1;
未签名的字符 RegID= 0x00;
ss1=0xff; 秒数 = 0xff;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_传输( hspi1, RegID, 1,100);
for(int i=0;i<8;i++)
{
HAL_SPI_ 传输( hspi1, ss1, 1, 100);
延迟(1);
}
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
//模式寄存器 禁用内部基准 控制ADC的工作模式连续模式 和主时钟选择 内部振荡器
ADCModeConfig (8 REGADMODODE, 16 REFEN, 16 MODE_CONV, 16 CLOCKSELINTOS)
{
16 写数据= 0x0000;
8RegID00,regID01;
写数据=refen mode_conv clockselintos;
RegID00= WriteData>>8;
RegID01=书面数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_传输( hspi1, REGADMOMODE, 1,100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}

//接口模式寄存器 使能连续读取ADC数据寄存器
ADIFMModeConfig (8 REGIFMODE, 16 CONTREADEN, 16 DATATATEN) 无效
{
16 写数据= 0x0000;
8RegID00,regID01;
写数据= contreaden datas staten; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态; 数据状态。
RegID00= WriteData>>8;
RegID01=书面数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
延迟(1);
HAL_SPI_传输( hspi1, REGIFMODE, 1,100);
HAL_SPI_传输接收( hspi1, RegID00, id1, 1,100);
HAL_SPI_传输接收( hspi1, RegID01, id2, 1,100);
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
//GPIO配置寄存器
ADGPIOConfig(8个REGGPCOON)
{
/ 未签名的字符regID00=0x01,regID01=0xCF;
16 写数据= 0x0000;
8RegID00,regID01;
写数据=0x000;
RegID00= WriteData>>8;
RegID01=书面数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
延迟(1);
HAL_SPI_传输( hspi1, REGGPICOON, 1,100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
//通道寄存器是16位寄存器,用于选择当前有效的通道、各通道使用
//哪些输入以及该通道使用何种设置来配置ADC。
ADDChannel Config (8 REGCH, ut16 CHEN, ut16 SETUPSEL, ut16 AINPOSa, ut16 ANNEGA)
{
16 写数据= 0x0000;
8RegID00,regID01;
书写数据=chen setupsel asposa ainnega; 书写数据=chen setupsel ainposa ainnega; 书写数据=chen setupsel siposa ainnega; 书写数据=chen setupsel simpa ainnega; 书写数据=chen setupsel sits asposa ainnega; 书写数据=chen setupsel as a ainnega; 书写数据=chen setupssel as ainneega; 书写系统设置为a ainnega; 书写数据=chen setposa a ainnega; 书写系统设置为 书写系统设置
RegID00= WriteData>>8;
RegID01=书面数据;
/ hal_gpio_ writipin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ; / hal_gpio_writepin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ;
HAL_SPI_传输( hspi1, REGCH, 1, 100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
/ hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; / hal_ gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set ) ;
}
//设置配置寄存器0 配置ADC的基准电压源选择、输入缓冲器和输出编码方式
无效 ADSETUpConfig( 8 REGSETUP, 16 BiUniPolar, 16 refBuf, 16 AinBuf, 16 refSel)
{
16 写数据= 0x0000;
8RegID00,regID01;
书写数据=双单极正反弗布f ainbuf refsel;
RegID00= WriteData>>8;
RegID01=书面数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_传输( hspi1, REGSETUP, 1,100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
//滤波器配置寄存器0,用于配置ADC数据速率和滤波器选项
无效的AppilterConfig(8 REG_FILTCON,16 Sinc3Map,16 En FiltEn,16 EnFilSel,16 命令,16 odr)
{
16 写数据= 0x0000;
8RegID00,regID01;
书面数据=sinc3map enfilten effilsel 订单 odr;
RegID00= WriteData>>8;
RegID01=书面数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_传输( hspi1, REG_ FILTCON, 1,100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
无效的 ADOFFSETConfig( OFSET 8)
{
编写数据= 0x000000;
8 RegID00、regID01、regID02;
写数据=0x800000;
RegID00= WriteData>>16;
RegID01= WriteData>>8;
RegID02=书写数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_ Transmission (hspi1, OFSET, 1,100); 发件人: HAL_SPI_ Transmit (hspi1, OFSET, 1,100); 发件人: HAL_SPI_transmit (hspi1, OFSET, 1,100); 发件人: HAL_SPI_transmit (hspi1, OFSET, 1,100); 发件人: HAL_SPI_transmit (hspi, OFSET, 1,100); 发件人:
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID02, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
无效的 ADGAINConfig( 8 GAIN)
{
编写数据= 0x000000;
8 RegID00、regID01、regID02;
写数据=0x500000;
RegID00= WriteData>>16;
RegID01= WriteData>>8;
RegID02=书写数据;
hal_gpio_writepin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ reset) ; 鼠标 :
HAL_SPI_传输( hspi1, GAIN, 1,100);
HAL_SPI_ Transmit( hspi1, RegID00, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID01, 1, 100) ;
HAL_SPI_ Transmit( hspi1, RegID02, 1, 100) ;
hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; 鼠标 :
}
无效的 ADREAD( 撤销)
{
(一) 内 容 提 一 ;
未签名的字符 DATAREG= 0x44, RegID00= 0x00,ss;
/ hal_gpio_ writipin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ; / hal_gpio_writepin (adcs_gpio_port,adcs_pin,gpio_pin_reset) ;
延迟(1);
//HAL_SPI_转发(hspi1,DATAREG,1,100);
/ HAL_GPIO_WritePin(ACCS_GPIO_Port,ADCS_Pin,GPIO_PIN_SET);
/ HAL_GPIO_WritePin(ACCS_GPIO_Port,ADCS_Pin,GPIO_PIN_RESET);
for(i=0;i<2;i++)
{
延迟(10);
HAL_SPI_传输接收( hspi1, RegID00, 数据[i], 1,100);
延迟(10);
HAL_SPI_传输接收( hspi1, RegID00, 数据[i1], 1,100);
延迟(10);
HAL_SPI_传输接收( hspi1, RegID00, 数据[i2], 1,100);
//HAL_SPI_转发接收(hspi1, RegID00, ss, 1,100);
}
/ hal_gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set) ; / hal_ gpio_ writipin( adcs_ gpio_ port, adcs_ pin, gpio_ pin_ set ) ;
}

更多回帖

发帖
×
20
完善资料,
赚取积分