基于SPI通信协议的STM32(HAL库)控制DAC8563输出

声明

本实验使用的是某宝的集成板子。(懒得自己焊接调试)

在这里插入图片描述

SPI通信

接口说明: 下表为stm32引脚与集成DAC8563板子的引脚连接图

stm32DAC8563
+5VV+
GNDGND
NSS(片选引脚,随便找一个GPIO输出)SYN
SCKSCK
MOSIDIN

由于DAC8563只可以写入不能读取,所以除了VCC和GND,只需三根线即可进行通信。

SPI通信时序图
在这里插入图片描述
使用HAL库编程这里我们主要关注以下几个参数指标:

  1. 串行时钟频率:最大为50MHz
  2. t4:片选信号高电平最小的持续时间为80ns

控制指令

DAC8563一次可接收24位数据,22~23位不使用默认为0,19 ~ 21位为控制位,16 ~ 18位为地址位,0 ~ 15位为数据位。
0x180001: 向A通道输入数据0x0001
0x190001:向B通道输入数据0x0001
0x280001:复位所有寄存器
0x200003:通道A和通道B上电
在这里插入图片描述

电压计算公式

在这里插入图片描述

HAL库代码

void dac8563config(uint8_t opcode_address, uint16_t config_reg_data)   //配置寄存器
{
	uint8_t temp[3];
	temp[0] = opcode_address;
	temp[1] = (uint8_t) ((config_reg_data)>>8);
	temp[2] = (uint8_t) (config_reg_data);
	
	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_RESET);
	HAL_SPI_Transmit(&hspi2,temp,3,0xffff);
	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_SET);
	HAL_Delay(1);
}
void wr_dac_x(uint16_t data)     //向通道X写入16位数据并更新 
{
	uint8_t temp[3];
	temp[0] = 0x18;
	temp[1] = (uint8_t) (data >> 8);
	temp[2] = (uint8_t) data;

	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_RESET);
	HAL_SPI_Transmit(&hspi2,temp,3,0xffff);
	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_SET);
}
void wr_dac_y(uint16_t data)     //向通道Y写入16位数据并更新 
{
	uint8_t temp[3];
	temp[0] = 0x19;
	temp[1] = (uint8_t) (data >> 8);
	temp[2] = (uint8_t) data;

	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_RESET);
	HAL_SPI_Transmit(&hspi2,temp,3,0xffff);
	HAL_GPIO_WritePin(GPIOC,nss_dac_Pin,GPIO_PIN_SET);
}
void dac_config(void)    //配置寄存器汇总
{
	dac8563config(0x28,0x0001);   //软件复位
	dac8563config(0x20,0x0003);   //两通道上电
	dac8563config(0x38,0x0001);   //使用内部参考电压设置增益为2
	dac8563config(0x18,0x0000);   //向通道x写入数据0x0000并更新
  dac8563config(0x19,0x0010); 	//向通道y写入数据0x0010并更新
}
int main()
{
  dac_config(void);
  wr_dac_x(1);
  wr_dac_y(1);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值