硬件设计
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文库