资源简介
STM32适用于AD7124-4和AD7124-8 已验证测试
可见帖子https://www.amobbs.com/forum.php?mod=viewthread&tid=5728545&page=1#pid11230725
也可以稍微修改用于其他平台 没用官方的库 看着修改费劲
可见帖子https://www.amobbs.com/forum.php?mod=viewthread&tid=5728545&page=1#pid11230725
也可以稍微修改用于其他平台 没用官方的库 看着修改费劲
代码片段和文件信息
#include“stm32f10x_conf.h“
/*代码说明
*参考代码基于STM32F103XX主频为72MHz
*代码使用IO模拟SPI,仅与四个IO有关
*Delay(100);的延时长度约为25us
*寄存器操作逻辑描述:首先写入通信寄存器,指示读取或写入、所操作寄存器地址,随后读取或写入1Byte或3Byte数据。
*/
#define AD7124_8_CS_H GPIO_SetBits(GPIODGPIO_Pin_0)
#define AD7124_8_CS_L GPIO_ResetBits(GPIODGPIO_Pin_0)
#define AD7124_8_SCLK_H GPIO_SetBits(GPIODGPIO_Pin_1)
#define AD7124_8_SCLK_L GPIO_ResetBits(GPIODGPIO_Pin_1)
#define AD7124_8_DIN_H GPIO_SetBits(GPIODGPIO_Pin_2)
#define AD7124_8_DIN_L GPIO_ResetBits(GPIODGPIO_Pin_2)
#define AD7124_8_DOUT GPIO_ReadInputDataBit(GPIODGPIO_Pin_4)
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void Delay(vu32 nCount);
void AD7124_8_Reset(void);
void LED_TEST(void);//AD7124_8的 PSW 上连接的LED,控制LED闪烁
void read_reg(void);//读取配置寄存器与模式寄存器值,结果存于全局变量conf_reg[3]、mode_reg[3]中
void AD7124_8_INIT(void);
void AD7124_8_INIT1(void);//多通道配置
void AD7124_8_Write(uint8_t Data);
uint32_t AD7124_8_Read(void);//读取结果函数,返回uint32_t 类型结果
uint8_t AD7124_8_Read_Byte(void);//字节读取函数
uint8_t AD7124_8_ID;//复位值为0x12或0x14;
uint32_t Data;
float data_tempVol;
float VolM[8];
uint8_t DATA_STATUS;
int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
AD7124_8_Reset();//复位AD7190数字接口
Delay(100);
/*
AD7124_8_CS_L;
Delay(10);
AD7124_8_Write(0x45);//读取ID寄存器
AD7124_8_ID=AD7124_8_Read_Byte();//读取AD7124-8 ID = 0x12/0x14
AD7124_8_CS_H;
*/
AD7124_8_INIT();
while (1)
{
//LED_TEST();
while(AD7124_8_DOUT);//低电平时数据就绪
Data=AD7124_8_Read();//Data采集结果
data_temp=Data;
Vol=(data_temp-0x800000)/0x800000*2.5;
}
}
void AD7124_8_INIT(void)//单通道配置
{
AD7124_8_CS_L;
Delay(100);
AD7124_8_Write(0x09);//写入通道寄存器0 CHANNEL_0 (datasheet Page 86)
AD7124_8_Write(0x80);//使能通道,当有多个通道被使能时,自动按顺序转换;使用CONFIG_0配置当前通道。ADC链接与AIN0与AIN1
AD7124_8_Write(0x01);
AD7124_8_Write(0x19);//写入配置寄存器0 CONFIG_0;(datasheet Page 88)
AD7124_8_Write(0x09);//选择双极型模式、关闭检测电流源、使能REF BUF与AIN BUF,选择内部基准源,增益配置为+-2.5V;
AD7124_8_Write(0xf0);
AD7124_8_Write(0x21);//写入滤波寄存器寄存器,FILTER_0 (datasheet Page 89)
AD7124_8_Write(0x06);//使用SINC4 滤波器
AD7124_8_Write(0x00);
AD7124_8_Write(0x80);//FS=128因此数据输出速率 = 614.4K/(32*128)= 150Hz
AD7124_8_Write(0x01);//写入ADC控制寄存器,ADC_CONTROL (datasheet Page 78)
AD7124_8_Write(0x09);//使能连续读取,使能内部基准,全功率模式,使用内部614.4kHz时钟源,连续工作模式。
AD7124_8_Write(0xC0);
}
void AD7124_8_INIT1(void)//多通道配置
{
AD7124_8_CS_L;
Delay(100);
AD7124_8_Write(0x09);//写入通道寄存器0 CHANNEL_0 (datasheet Page 86)
AD7124_8_Write(0x80);//使能通道,当有多个通道被使能时,自动按顺序转换;使用CONFIG_0配置当前通道。ADC链接与AIN0与AIN1
AD7124_8_Write(0x01);
AD7124_8_Write(0x0A);//写入通道寄存器1 CHANNEL_1
AD7124_8_Write(0x80);//使能通道,当有多个通道被使能时,自动按顺序转换;使用CONFIG_1配置当前通道。ADC链接与AIN2与AIN3
AD7124_8_Write(0x43);
AD7124_8_Write(0x0B);//写入通道寄存器2 CHANNEL_2
AD7124_8_Write(0x80);//使能通道,当有多个通道被使能时,自动按顺序转换;使用CONFI
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8662 2019-10-26 23:59 多通道参考程序\main.c
文件 8506 2019-10-26 23:57 单通道参考程序\main.c
目录 0 2019-10-27 00:00 多通道参考程序
目录 0 2019-10-27 00:00 单通道参考程序
----------- --------- ---------- ----- ----
17168 4
- 上一篇:头像上传裁剪整合php
- 下一篇:html+php+mysql留言板功能的实现
评论
共有 条评论