2097|20

2625

帖子

6

TA的资源

五彩晶圆(初级)

楼主
 

ADX824 32bit ADC驱动 [复制链接]

 
#include "main.h"
#include "main_thread.h"
#include "set.h"
#include "ADX824.H"


/*****************************************
1 delay(TCSSC) > 40ns
2 delay(TSCLKDLY) > (24 * (1 /fclk)) 
3 delay(TSCSC)  > (24 * (1 /fclk))
4 Send the CMD_RDATAC before using ADX824_ReadValue
*****************************************/


/*
Function:       ADX824_Init
Description:    ADX824 GPIO and SPI initialization  
Input :         null
return:         null
*/
void ADX824_Init(void)
{
	// RESET/PWDN/RESET definition
	GPIO_Init();
	ADX82X_PWDN_HIGH;
	ADX82X_RESET_HIGH;
	// SPI INIT   CPOL = LOW/CPHA = 1EDGE/BaudRate 2Mhz
	ADX824_SPI_Init();
}

/*
Function:       ADX824_WriteCMD
Description:    ADX824 Write cmd 
Input :         CMD
return:         null
*/
void ADX824_WriteCMD(uint8_t CMD)
{
	uint8_t r;
	SPI_NSS_L;
	delay(TCSSC);
	ADX824_SPI_TransmitReceive_ReadSetREG(&CMD,&r,1);
	delay(TSCSC);
	SPI_NSS_H;
}

/*
Function:       ADX824_SetReg
Description:    ADX824 Write register
Input :         regAddess : Need to write the first address of the register
								sbuff : Write reg value
								size:		Write the number of registers
return:         null
*/
void ADX824_SetReg(uint8_t regAddess,uint8_t *sbuff,uint8_t size)
{
	uint8_t p[3],r[20],i;
	
	p[0] = CMD_SDATAC;
	p[1] = CMD_WREG | regAddess;
	p[2] = size - 1;
	SPI_NSS_L;
	delay(TCSSC);
	for(i = 0;i < 3;i ++)
	{
		ADX824_SPI_TransmitReceive_ReadSetREG(&p[i],&r[i],1);
		delay(TSCLKDLY);
	}
	for(i = 0;i < size;i ++)
	{
		ADX824_SPI_TransmitReceive_ReadSetREG(&sbuff[i],&r[i],1);
		delay(TSCLKDLY);
	}
	delay(TSCSC);
	SPI_NSS_H;
}

/*
Function:       ADX824_ReadReg
Description:    ADX824 read register
Input :         regAddess : Need to read the first address of the register
								sbuff : Read register save buff
								size:		read the number of registers
return:         null
*/
void ADX824_ReadReg(uint8_t regAddess,uint8_t *rbuff,uint8_t size)
{
	uint8_t p[3],r[20],i;
	
	p[0] = CMD_SDATAC;
	p[1] = CMD_RREG | regAddess;
	p[2] = size - 1;
	SPI_NSS_L;
	delay(TCSSC);
	for(i = 0;i < 3;i ++)
	{
		ADX824_SPI_TransmitReceive_ReadSetREG(&p[i],&r[i],1);
		delay(TSCLKDLY);
	}
	for(i = 0;i < size;i ++)
	{
		ADX824_SPI_TransmitReceive_ReadSetREG(&r[i],&rbuff[i],1);
		delay(TSCLKDLY);
	}
	delay(TSCSC);
	SPI_NSS_H;
}

/*
Function:       ADX824_ReadValue
Description:    ADX824 read value
Input :         null
return:         read value
*/
uint32_t ADX824_ReadValue(void)
{
	uint8_t p[4],r[4];
	uint32_t  value;
	SPI_NSS_L;
	ADX824_SPI_TransmitReceive_ReadValue(p,r,4);
	SPI_NSS_H;
	value = (uint32_t)(r[0] << 24) + (uint32_t)(r[1] << 16) + (uint32_t)(r[2] << 8) + (uint32_t)(r[3]);
	return value;
}

void ADX824_Test(void)
{
	uint32_t Value;
	uint8_t config0;
	ADX824_Init();
	config0 = Pulse_sync_mode | High_resolution_mode | DR_500sps | Linear_phase | FILTR_Sinc_LPF;
	ADX824_SetReg(CONFIG0,&config0,1);
	ADX824_WriteCMD(CMD_RDATAC);
	while(1)
	{
		if(ADX82X_DRDY_READ == 0)
		{
			Value = ADX824_ReadValue();
		}
	}
}

#ifndef _ADX824_H_
#define _ADX824_H_

#define ADX82X_PWDN_HIGH		
#define ADX82X_PWDN_LOW			
#define ADX82X_RESET_HIGH		
#define ADX82X_RESET_LOW		

#define ADX82X_DRDY_READ		

#define	SPI_NSS_L						
#define	SPI_NSS_H						

#define CMD_WAKEUP					0x00
#define CMD_STANDBY					0x02
#define CMD_SYNC						0x04
#define	CMD_RESET						0X06
#define CMD_RDATAC					0X10
#define CMD_SDATAC					0x11
#define	CMD_RDATA						0x12
#define	CMD_RREG						0x20
#define CMD_WREG						0x40
#define CMD_OFSCAL					0x60
#define	CMD_GANCAL					0x61

#define REG_ID_CFG					0X00
#define	CONFIG0							0X01
#define	CONFIG1							0X02
#define	HPF0								0X03
#define	HPF1								0X04
#define	OFC0								0X05			
#define	OFC1								0X06		
#define	OFC2								0X07	
#define	FSC0								0X08	
#define	FSC1								0X09	
#define	FSC2								0X0A	

//config0 01h
#define Pulse_sync_mode						0x00
#define Continuous_sync_mode			0x80
#define	Low_power_mode						0x00					
#define	High_resolution_mode			0x40	
#define DR_250sps									0x00
#define	DR_500sps									0x08	
#define	DR_1000sps								0x10
#define	DR_2000sps								0x18
#define	DR_4000sps								0x20
#define Linear_phase							0x00
#define Minimum_phase							0x04
#define	FILTR_Reserved						0x00
#define	FILTR_Sinc								0x01
#define	FILTR_Sinc_LPF						0x02
#define	FILTR_Sinc_LPF_HPF				0x03

//config1 02h
#define MUX_AINP1_N1							0X00
#define MUX_AINP2_N2							0X10
#define MUX_Shout_400_res					0X20
#define MUX_Shout_AIN1_CONN_AIN2	0X30
#define MUX_EXT_Shout_AINN2				0X40
#define PGA_CHOP_DISABLE					0X00
#define PGA_CHOP_ENABLE						0X08
#define PGA_GAIN_1								0x00
#define PGA_GAIN_2								0x01
#define PGA_GAIN_4								0x02
#define PGA_GAIN_8								0x03
#define PGA_GAIN_16								0x04
#define PGA_GAIN_32								0x05
#define PGA_GAIN_64								0x06

void ADX824_Init(void);
void ADX824_WriteCMD(uint8_t CMD);
void ADX824_SetReg(uint8_t regAddess,uint8_t *sbuff,uint8_t size);
void ADX824_ReadReg(uint8_t regAddess,uint8_t *rbuff,uint8_t size);
uint32_t ADX824_ReadValue(void);

#endif

ADX824驱动,通常是用来测地震的

此帖出自stm32/stm8论坛

最新回复

资料及采购通道在哪  详情 回复 发表于 2024-5-13 14:14
点赞 关注(1)
个人签名

希望做一些大家觉得好用的东西!

 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

厉害了,来测地震的

此帖出自stm32/stm8论坛

点评

测其他的当然也行,但是可以用来测地震  详情 回复 发表于 2023-9-13 08:43
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

板凳
 
Jacktang 发表于 2023-9-13 07:28 厉害了,来测地震的

测其他的当然也行,但是可以用来测地震

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 

回复

1131

帖子

17

TA的资源

纯净的硅(高级)

4
 

这么高精度,确实少见,不知价格几何?

此帖出自stm32/stm8论坛

点评

价格不太清楚,官网看看  详情 回复 发表于 2023-9-13 08:55
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

5
 
fxyc87 发表于 2023-9-13 08:47 这么高精度,确实少见,不知价格几何?

价格不太清楚,官网看看

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

6069

帖子

4

TA的资源

版主

6
 

楼主这是准备用到哪里呢?

此帖出自stm32/stm8论坛

点评

是我们公司的芯片,我分享下驱动  详情 回复 发表于 2023-9-13 09:51
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

7
 
damiaa 发表于 2023-9-13 09:25 楼主这是准备用到哪里呢?

是我们公司的芯片,我分享下驱动

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

27

帖子

3

TA的资源

一粒金砂(中级)

8
 

这个精度够高的,想来价格也应该是天花板级别的。

此帖出自stm32/stm8论坛

点评

还好还好,国产肯定是物美价廉  详情 回复 发表于 2023-9-13 10:57
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

9
 
hhp_008 发表于 2023-9-13 10:03 这个精度够高的,想来价格也应该是天花板级别的。

还好还好,国产肯定是物美价廉

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

6060

帖子

6

TA的资源

版主

10
 

这么高的精度有点不可思议,一般24为就算挺高的了  

此帖出自stm32/stm8论坛

点评

各有各的市场  详情 回复 发表于 2023-9-15 17:21
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

11
 
秦天qintian0303 发表于 2023-9-15 17:20 这么高的精度有点不可思议,一般24为就算挺高的了  

各有各的市场

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

6841

帖子

11

TA的资源

版主

12
 

测其他的当然也行,但是可以用来测地震,来个测地震的原理图,我们学习学习呀!

此帖出自stm32/stm8论坛

点评

没有测地震的原理图,有客户这么用  详情 回复 发表于 2023-9-15 19:27
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

13
 
lugl4313820 发表于 2023-9-15 18:40 测其他的当然也行,但是可以用来测地震,来个测地震的原理图,我们学习学习呀!

没有测地震的原理图,有客户这么用

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

351

帖子

3

TA的资源

纯净的硅(初级)

14
 

能分享数据手册吗?看看参数如何

此帖出自stm32/stm8论坛

点评

半导小芯搜索一下  详情 回复 发表于 2023-9-17 20:44
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

15
 
hjl2832 发表于 2023-9-17 20:04 能分享数据手册吗?看看参数如何

半导小芯搜索一下

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

2056

帖子

0

TA的资源

五彩晶圆(初级)

16
 

要设计高精度的参考源吗?如果内部有参考源就好了

 

此帖出自stm32/stm8论坛

点评

外部高精度参考看看凌特  详情 回复 发表于 2023-9-25 09:07
 
 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

17
 
IC爬虫 发表于 2023-9-25 09:06 要设计高精度的参考源吗?如果内部有参考源就好了  

外部高精度参考看看凌特

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

18
 

32bit这得信号多稳定啊。。。不然的话随便跳一点,后面一大半数据都在飘。

此帖出自stm32/stm8论坛

点评

是的嘞  详情 回复 发表于 2023-9-27 16:05
 
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 

回复

2625

帖子

6

TA的资源

五彩晶圆(初级)

19
 
freebsder 发表于 2023-9-27 15:20 32bit这得信号多稳定啊。。。不然的话随便跳一点,后面一大半数据都在飘。

是的嘞

此帖出自stm32/stm8论坛
 
个人签名

希望做一些大家觉得好用的东西!

 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

20
 

资料及采购通道在哪


此帖出自stm32/stm8论坛

点评

我的邮箱 xutong@anlogysemi.com  详情 回复 发表于 2024-5-13 16:48
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
【EEWORLD模块整理】+tlc2543(A/D)

今年我用的模块资料 已经证实好用

FPGA DCM时钟管理单元的理解

看Xilinx的Datasheet会注意到Xilinx的FPGA没有PLL,其实DCM就是时间管理单元。 --------------------------------------------- ...

电烙铁的使用小技巧

本人原创——乃自己当时查阅的资料和自己的一点点经验而写成,如有错误请多指教! 首先要说明的是,使用电烙 ...

ubuntu下修改内核发生“ncurses libraries“错误(解决方法)

BSEC@bsec-server:~/kernel/Kernel$ make menuconfig HOSTCC scripts/basic/fixdep HOSTCC scripts/basic/docproc HOSTCC script ...

在屏幕上显示大写字母DMH的VGA控制器

本帖最后由 PuesueDream 于 2015-7-22 17:18 编辑 基于ise14.7平台,用Nexys3开发板弄了一个显示程序。程序包含六部分 首 ...

msp430f149波特率设置

本帖最后由 灞波儿奔 于 2020-1-10 23:14 编辑 TI MSP430系列单片机,usart模块的波特率值设定是通过以下三个寄存器决定的 ...

为什么给一个变量赋值0时,直接写=0,而给它赋值0xffffffff时要写成=0xffffffffu

为什么给一个变量赋值0时,直接写*ram=0即可,而给它赋值0xffffffff时要写成*ram=0xffffffffu, 以下是具体的代码 /****** ...

报名提醒:最后几小时,100套价值390元平头哥RISC-V生态开发板免费送~

最后几小时啦,想要的网友速速来~100套价值390元平头哥RISC-V生态开发板——RVB2601来袭,现在提交创意,即有机会免费 ...

在现代计算机上运行虚拟Mac Quadra 900

682909 macintosh.js 是一个模拟 1991 年 Macintosh Quadra 900 和摩托罗拉 CPU 的虚拟机,它完全用 JavaScript 编写(因此请 ...

反激电源辅助供电绕组串联电阻

看到很多反激电源辅助绕组串联电阻的,如下图电阻Rvcc,想问一下这个电阻的作用是什么?

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表