AD5270 AD5271 STM32 SPI驱动设计

硬件设计

AD5270 AD5271 简介:1024位、1%电阻容差误差、SPI接口和50-TP存储器数字变阻器。特性:单通道、1024/256位分辨率;标称电阻:20 kΩ,50 kΩ和100 kΩ;标称电阻容差误差:±1%(最大值);50次可编程(50-TP)游标存储器;变阻器模式下的温度系数:5 ppm/°C;2.7 V至5.5 V单电源供电;双电源供电:±2.5 V至±2.75 V(交流或双极性工作模式);SPI兼容型接口;游标设置回读功能;上电后采用50-TP存储器数据刷新;超薄LFCSP、10引脚、3 mm × 3 mm × 0.8 mm封装;紧凑型MSOP、10引脚、3 mm × 4.9 mm × 1.1 mm封装。

本文使用的工程代码,含使用手册如下:

AD5270AD5271STM32SPI驱动设计,针对AD5720原理图设计,与MCU采用SPI接口,工程实现设定数值资源-CSDN文库

原理图设计如下

与MCU管脚连接如下表所示

Label

24AA64T/24LC64

STM32F407

DIG_RES1_SDO

SDO

PB15

DIG_RES1_SDI

DIN

PB12

DIG_RES1_SCLK

SCLK

PB13

DIG_RES1_SYNC

SYNC

PB14

 软件设计

工程代码主要是完成如下内容:

管脚初始化,使用串口1作为调试串口。

使用stm32cubeIDE对管脚进行配置,其中PB12配置为GPIO输入模式,PB13/PB14/PB15配置为GPIO输出模式。如下图所示

 

 对AD5270数据进行配置,读写测试函数

void AD5270_set_value_U30(uint16_t value)
{
	if(value > 0x3FF)
	  printf("tolerance error is too larger\r\n");
	else
	{
		#if(DEBUG_AD5270 == 1)
			uint16_t RDAC_val_read;
		#endif
			printf("RDAC_val_write = %d\r\n", value);
			//enable RDAC write
			SPI_Tx_16bit(COMMAND_W_CONTROL|0x03);
			//Write RDAC Reg
			SPI_Tx_16bit(COMMAND_W_RDAC|value);
		#if(DEBUG_AD5270 == 1)
			//read RDAC Reg
			SPI_Tx_16bit(COMMAND_R_RDAC);
			RDAC_val_read=SPI_Tx_16bit(COMMAND_NOP);
			printf("RDAC_val_read = %d\r\n", RDAC_val_read);
		#endif
			//save to 50-tp
			//SPI_Tx_16bit(COMMAND_STORE_RDAC_50TP);
	}
}

主函数如下:

  /* USER CODE BEGIN 2 */
  AD5270_init();
  AD5270_set_value_U30(0xff);
  /* USER CODE END 2 */

初始化函数

void AD5270_IO_Initialize(void)
{
	SYNC_LOW;
	SCLK_LOW;
	SDIN_LOW;

//	SYNC_LOW_1;
//	SCLK_LOW_1;
//	SDIN_LOW_1;
}

 针对AD5270的一些宏定义函数

#define COMMAND_NOP  									(0x00<<10)
#define COMMAND_W_RDAC 								(0x01<<10)
#define COMMAND_R_RDAC  							(0x02<<10)
#define COMMAND_STORE_RDAC_50TP  			(0x03<<10)
#define COMMAND_SOFTWARE_RESET  			(0x04<<10)
#define COMMAND_R_50TP_NEXT_FRAME  		(0x05<<10)
#define COMMAND_R_LAST_50TP_LOCATION  (0x06<<10)
#define COMMAND_W_CONTROL  						(0x07<<10)
#define COMMAND_R_CONTROL  						(0x08<<10)
#define COMMAND_SOFTWARE_SHUTDOWN  		(0x09<<10)

void AD5270_init(void);
void AD5270_IO_Initialize(void);
uint16_t SPI_Tx_16bit(uint16_t sendData);
uint16_t SPI_Tx_16bit_1(uint16_t sendData);
void AD5270_set_value_U30(uint16_t value);
void AD5270_set_value_U33(uint16_t value);

测试记录

主函数运行结果

RDAC_val_write = 255
RDAC_val_read = 255

本文使用的工程代码,含使用手册如下:

AD5270AD5271STM32SPI驱动设计,针对AD5720原理图设计,与MCU采用SPI接口,工程实现设定数值资源-CSDN文库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大牛攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值