项目进展(八)-编写代码,驱动ADS1285

一、代码

根据芯片的数据手册编写部分驱动,首先看部分引脚的波形:

DRDY:

CS:

首先在代码初始化时连续写入三个寄存器:

c 复制代码
void WriteReg(uint8_t startAddr, uint8_t *regData, uint8_t number)
{
	uint8_t  i=0;// 循环写number+1次
	// 根据手册说明,若写入number个寄存器,则该位为number-1
	uint8_t subNumber = number-1; 
	regData[1] = subNumber;  
	// 拉低CS引脚
	ADC_X_CS_LOW; 
	// 循环写nuber+2次 
	for(i=0;i<number+2;i++){
		writeData = regData[i];
		HAL_SPI_Transmit(&hspi2,(uint8_t *)&writeData,1,10);
	}
	// 拉高CS引脚
	ADC_X_CS_HIGH;  
}

三个寄存器初始化(随便写的):

c 复制代码
	data[0] = 0x00;// 地址
  	data[1] = 0x02;// 个数(number-1,例如若写入的寄存器为3个,则该值为2)
  	data[2] = 0x00;// 寄存器1的值
	data[3] = 0x40;// 寄存器2的值
	data[4] = 0x08;// 寄存器3的值
	WriteReg(0x00,data,3);

以上代码都是根据数据手册写的,可以参考下图:

或者参考上一篇博客"项目进展(七)-焊接ADS1285及其外围电路,学习芯片的SPI部分"中2.3节。

下面是波形图:

下面是放大后的数据波形图(注意,该芯片采用SPI第一种模式,CLK空闲时间为低,第一个上升沿采集数据):

①起始地址(data0 = 0x00):

②要写入的寄存器个数(data1 = 0x02):

③寄存器1(data2 = 0x00):

④寄存器2(data3 = 0x40):

⑤寄存器3(data4 = 0x08):

不过目前读取数据时还存在问题,读取的数据不正确,还需要继续阅读数据手册,然后代码。

再次补充一点,前面代码写的有些错误,具体还是得看数据手册

目前还是有问题,需要后续继续查看手册,解决问题

二、往期回顾

项目进展(一)-晶振正常输出、焊接驱动芯片、查找芯片手册并学习
项目进展(二)-配置MCT8316ZR芯片,主要学习如何根据数据手册配置外设等
项目进展(三)-电机驱动起来了,发现了很多关键点,也遇到了一些低级错误
项目进展(四)-双电机均可驱动,配置模拟SPI,调平仪功能初步实现!
项目进展(五)-修复PCB电路板,学习32位ADC芯片ADS1285
项目进展(六)-继续学习32位ADC芯片ADS1285
项目进展(七)-焊接ADS1285及其外围电路,学习芯片的SPI部分

相关推荐
Dev_XH4 小时前
【成品设计】基于单片机的家用智能浇花系统的设计与实现
stm32·单片机·嵌入式硬件·物联网
意法半导体STM325 小时前
【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM
stm32·单片机·嵌入式硬件·mcu·stm32n6·hyperram
Zwawa7 小时前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
欧西7 小时前
零成本做一颗芯片:我用 OpenLane 把 SHA-256 从 Verilog 做到了 GDS
开源·嵌入式
倔强的胡萝卜9 小时前
基于STM32F103C8T6的温度报警器设计
stm32·单片机·嵌入式硬件
Zw-awa10 小时前
两根线怎么挂住一堆设备:I2C 协议原理
stm32
LCG米11 小时前
STM32 定时器主从模式输出精确脉冲数实测:TRGO 触发链拆解、多发一脉冲根因与干净停止时序落地
stm32·单片机·嵌入式硬件·嵌入式
FakeOccupational12 小时前
【电路笔记 STM32】RTC配置:晶振选择+闹钟Configuration+中断设置
笔记·stm32·实时音视频
Dev_XH12 小时前
【成品设计】基于物联网的配电箱智能防护系统设计
stm32·单片机·嵌入式硬件·物联网
Dev_XH14 小时前
【成品设计】基于单片机的工厂设备能耗监控与优化系统
stm32·单片机·嵌入式硬件·物联网