ADX3208驱动基于RT1052的方法_第1页
ADX3208驱动基于RT1052的方法_第2页
ADX3208驱动基于RT1052的方法_第3页
ADX3208驱动基于RT1052的方法_第4页
ADX3208驱动基于RT1052的方法_第5页
全文预览已结束

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ADX3208驱动基于RT1052的方法/*Analogysemixutong2023/02/15*/#include"ADX3208.h"#include"board.h"#include"bsp_lpspi.h"#include"rtthread.h"//初始化ADX3208voidADX3208_Init(void){//START_L;//XTAL_H;//PWDN_H;//RST_H;//rt_thread_mdelay(150);//RST_L;//rt_thread_mdelay(1);//RST_H;}//获取芯片的ID号uint8_tADX3208_GetChipID(void){uint8_tID;ID=ADX3208_GetReg(ADX3208_ID);returnID;}//获取芯片寄存器值uint8_tADX3208_GetReg(uint8_tRreg){uint8_tTxData[3];uint8_tRxData[3];//读取命令,TxData[0]=ADX3208_RREG|Rreg;//选择要读取的寄存器TxData[1]=0x00;//读取单个寄存器TxData[2]=0X00;//开始读取Lpspi_Read(3,TxData,RxData);//返回寄存器值returnRxData[2];}//写单个芯片寄存器值voidADX3208_WriteReg(uint8_tWreg,uint8_tData){uint8_tTxData[3];//写入命令,TxData[0]=ADX3208_WREG|Wreg;//选择要写入的的寄存器TxData[1]=0x00;//读取写入寄存器TxData[2]=Data;Lpspi_Write(3,TxData);}//写多个芯片寄存器值//StartReg起始寄存器地址//RegNum要写的寄存器数量//*Data寄存器参数传入voidADX3208_WriteMultiReg(uint8_tStartReg,uint8_tRegNum,uint8_t*Data){uint8_tTxData[32];uint8_ti;//写入命令,TxData[0]=ADX3208_WREG|StartReg;//选择要写入的的寄存器TxData[1]=RegNum-1;for(i=0;i<RegNum;i++){//将指针数据赋值给TxdataTxData[2+i]=*Data;//指向下个数据地址Data++;}//最终发送多少个数据Lpspi_Write(2+RegNum,TxData);}//读多个芯片寄存器值//StartReg起始寄存器地址//RegNum要写的寄存器数量//*Data寄存器参数传出voidADX3208_ReadMultiReg(uint8_tStartReg,uint8_tRegNum,uint8_t*Data){//读取寄存器uint8_tTxData[3];//读取命令,TxData[0]=ADX3208_RREG|StartReg;//选择要写入的的寄存器TxData[1]=RegNum-1;//最终接收多少个数据Lpspi_Read(2+RegNum,TxData,Data);}//打印所有寄存器地址voidADX3208_GetAllReg(void){uint8_ti,j;for(i=0;i<24;i++){j=ADX3208_GetReg(i);//打印所有寄存器值//rt_kprintf("regaddr:%dregdefaultValue:%xrn",i,j);}}//发送ADX3208数据指令如SDATAC或者RDATAC//详情见头文件commanddefine部分voidADX3208_Command(uint8_tCom){uint8_tTxData[]={Com};Lpspi_Write(1,TxData);}//获取ADC的值//数据一共216位/152位//24位状态位1100FaultStatusP[7:0]FaultStatusN[7:0]GPIO[7:4]//8通道*ADC位数数据voidADX3208_GetADC_Value(uint8_tADC_Resolution,uint8_t*Rxdata){if(ADC_Resolution==16){Lpspi_Read(152,NULL,Rxdata);}else{Lpspi_Read(216,NULL,Rxdata);}}以上是.c文件/*Analogysemixutong2023/02/15*/#ifndef__ADX3208_H#define__ADX3208_H#include"bsp_lpspi.h"/*device需要先写入SDTAC启动寄存器写入才可以对寄存器进行操作在此之前需要检查PWDN以及Reset引脚的状态是否为高在操作完寄存器后,需要发送RDATAC才能连续读取数据bsp_lpspi的接口函数如下:Lpspi_Write(uint8_tdatasize,uint8_t*data);Lpspi_Read(uint8_tdatasize,uint8_t*data,uint8_t*Rxdata);注意:Lpspi的时序并不一定满足ADX3208的配置,以下配置经过验证lpspi_master_config_tconfig;LPSPI_MasterGetDefaultConfig(&config);config.whichPcs=kLPSPI_Pcs0;config.baudRate=50000;config.betweenTransferDelayInNanoSec=1000000000/500;config.pcsToSckDelayInNanoSec=1000000000/500;config.lastSckToPcsDelayInNanoSec=1000000000/500;config.cpha=kLPSPI_ClockPhaseSecondEdge;LPSPI_MasterInit(LPSPI3,&config,LPSPI3_CLOCK_FREQ);*//*commanddefine*/#defineADX3208_WAKEUP0x20#defineADX3208_STANDBY0x04#defineADX3208_RESET0x06#defineADX3208_START0x08#defineADX3208_STOP0x0a#defineADX3208_OFFSETCAL0x1a#defineADX3208_RDATAC0x10#defineADX3208_SDATAC0x11#defineADX3208_RDATA0x12//RREGReadnnnnnregistersstartingataddressrrrrr//FirstByte001rrrrr(2xh)//SecondByte000nnnnn//nnnnn=numberofregisterstobereadorwritten–1.Forexample,toreadorwritethreeregisters,setnnnnn=0(0010).rrrrr=the//startingregisteraddressforreadandwritecommands//WREG同上#defineADX3208_RREG0x20#defineADX3208_WREG0X40/*寄存器定义*/#defineADX3208_ID0x00#defineADX3208_CONFIG10x01#defineADX3208_CONFIG20x02#defineADX3208_CONFIG30x03#defineADX3208_LOFF0x04#defineADX3208_CH1SET0x05#defineADX3208_CH2SET0x06#defineADX3208_CH3SET0x07#defineADX3208_CH4SET0x08#defineADX3208_CH5SET0x09#defineADX3208_CH6SET0x0A#defineADX3208_CH7SET0x0B#defineADX3208_CH8SET0x0C#defineADX3208_OPAMP_SENSP0x0D#defineADX3208_OPAMP_SENSN0x0E#defineADX3208_LOFF_SENSP0x0F#defineADX3208_LOFF_SENSN0x10#defineADX3208_LOFF_FLIP0x11#defineADX3208_LOFF_STATP0x12#defineADX3208_LOFF_STATN0x13#defineADX3208_GPIO0x14/*寄存器Deafult值寄存器地址10进制:寄存器值16进制:regaddr:0regdefaultValue:0eregaddr:1regdefaultValue:91regaddr:2regdefaultValue:e0regaddr:3regdefaultValue:40regaddr:4regdefaultValue:00regaddr:5regdefaultValue:10regaddr:6regdefaultValue:10regaddr:7regdefaultValue:10regaddr:8regdefaultValue:10regaddr:9regdefaultValue:10regaddr:10regdefaultValue:10regaddr:11regdefaultValue:10regaddr:12regdefaultValue:10regaddr:13regdefaultValue:00regaddr:14regdefaultValue:00regaddr:15regdefaultValue:00regaddr:16regdefaultValue:00regaddr:17regdefaultValue:00regaddr:18regdefaultValue:00regaddr:19regdefaultValue:00regaddr:20regdefaultValue:0fregaddr:21regdefaultValue:00regaddr:22regdefaultValue:00regaddr:23regdefaultValue:00*/#defineADX3208_ADC_Resolution_1616#defineADX3208_ADC_Resolution_2424//写命令voidADX3208_Command(uint8_tCom);//获取芯片的ID号uint8_tADX3208_GetChipID(void);//获取寄存器值uint8_tADX3208_GetReg(uint8_tRreg);//获取多个寄存器值voidADX3208_ReadMultiReg(uint8_tStartReg,uint8_tRegNum,uint8_t*Data);//写入寄存器值void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论