AD7046 GD32 SPI驱动设计

硬件设计

AD7046简介:ADS7046 12 位, 3 MSPS, 单端输入, 小型低功耗 SAR ADC。ADS7046 是一款 12 位 3 MSPS SAR ADC, 支持0V到 AVDD 范围内的单端输入, AVDD 的范围为2.35V至 3.6V。内部失调电压校准功能在整个 AVDD 和工作温度范围内可保持优异的失调电压规格。该器件支持由 CS 和 SCLK 信号控制的兼容 SPI 的串行接口。 输入信号通过 CS 下降沿进行采样, 而 SCLK用于转换和串行数据输出。 该器件支持宽数字电源范围(1.65V 至 3.6V) , 可直接连接到各种主机控制器。ADS7046 的标称 DVDD 范围(1.65V 至 1.95V) 符合JESD8-7A 标准。

原理图设计如下

与MCU管脚连接如下表所示

Label

ADS7046

GD32F103RCT6

ADC_CSn

CS

PA4

ADC_SDO

SDO

PA6

ADC_SCLK

SCLK

PA5

本文使用工程代码,含使用手册,例程代码等资料,如下

ADS7046(含工程代码、使用手册、datasheet)实际工程中使用代码,正确读取电压值,长期稳定运行采样,可以直接使用资源-CSDN文库

软件设计

工程代码主要是模拟IO实现SPI读取数据,模拟过程参考如下时序图。

主函数代码

void tskmain( void *pvParameters )
{
	float voltage_ads7046;
	uint32_t time = 0;
	uint16_t value = 0;
	(void)pvParameters;


	//--任务运行-------------------------------------------
	while(1) 
	{	
		vTaskDelay(1000);
		time++;
		//printf("TIM: %d\r\n", time);
		//gd_eval_led_toggle(LED1);//ALARM_LED
		gd_eval_led_toggle(LED2);//RUN LED
		//ADC监测
		value = ads7046_read_value();
		printf("ads7046 value = 0x%x\r\n", value);
		voltage_ads7046 = (float) value/4096*3.3;
		printf("\nADS7046电压值为:%f\n",voltage_ads7046);
			

    }// end of while(1)
}// end of tskSysMan

 管脚初始化及宏定义

//输出信号
//ADC_CSN
//ADC_SCLK
//ADC_SDO
#define ADC_CSN_L     {GPIO_BC(GPIOA) =  GPIO_PIN_4;}
#define ADC_CSN_H     {GPIO_BOP(GPIOA) = GPIO_PIN_4;}


#define ADC_SCLK_L    {GPIO_BC(GPIOA) =  GPIO_PIN_5;}
#define ADC_SCLK_H    {GPIO_BOP(GPIOA) = GPIO_PIN_5;}



void ads7046_init(void)
{
	
	/* enable the led clock */
    rcu_periph_clock_enable(RCU_GPIOA);
    /* configure led GPIO port */ 
    gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
	gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5);
	//gpio_init(GPIOA, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
	
	    /* enable the key clock */
    //rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_AF);

    /* configure button pin as input */
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
}

测试记录

实际项目采用该代码,换算后电压值的测试结果,如下图

本文使用工程代码,含使用手册,例程代码等资料,如下

ADS7046(含工程代码、使用手册、datasheet)实际工程中使用代码,正确读取电压值,长期稳定运行采样,可以直接使用资源-CSDN文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大牛攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值