This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好,
现在,我正在尝试通过SPI将具有STM32F407的输出值写入DAC8552。 根据数据表寄存器描述,DAC应更改该值。 但它只会返回满刻度或零刻度。 传输的数据似乎也是正确的。
现在,DAC安装在分路板上。 它由实验室PSU提供5V电压。 对于首次测试,我将V_ref绑定到电源电压。
我的SPI具有以下配置:
模式:Master
时钟频率= 10MHz
数据流大小:8位
CPOL:0
CPHA:1.
第一位:MSB
儿童权利委员会:残疾
在我的软件中,我只需将两个不同的值写入DAC A,其间有100毫秒的延迟。 只需使用函数HAL_SPI_Transmit就会发送由其第三个参数定义的n个字节。
uINT8_t字节1[3];
uINT8_t字节2[3];
bytes1[0]= 0x10;
bytes1[1]= 0xAA;
bytes1[2]= 0x00;
bytes2[0]= 0x10;
bytes2[1]= 0x20;
bytes2[2]= 0x00;
HAL_GPIO_WritePin (SPI_CS1_GPIO端口,SPI_CS1_Pin,GPIO_PIN_SET);// SYNC=高
同时(1){
HAL_GPIO_WritePin (SPI_CS1_GPIO端口,SPI_CS1_Pin,GPIO PIN重置);// SYNC=低
HAL_SPI_Transmit (&hspi1,(uint8_t *)&bytes1,3100);//发送bytes1的每个元素
HAL_GPIO_WritePin (SPI_CS1_GPIO端口,SPI_CS1_Pin,GPIO_PIN_SET);// SYNC=高
HAL_DELAY (100);
HAL_GPIO_WritePin (SPI_CS1_GPIO端口,SPI_CS1_Pin,GPIO PIN重置);// SYNC=低
HAL_SPI_Transmit (&hspi1,(uint8_t *)&bytes2,3100);//发送bytes2的每个元素
HAL_GPIO_WritePin (SPI_CS1_GPIO端口,SPI_CS1_Pin,GPIO_PIN_SET);// SYNC=高
HAL_DELAY (100);
}
您是否知道DAC8552和STM32Fxx的此类问题? 您是否知道可能会出现什么问题?
此致,
西蒙
Howdy Simon,
欢迎参加e2e论坛! 我不太熟悉上面介绍的代码,但解决此问题的一个更好的方法是提供完整24位SPI事务的示波器捕获。 这将有助于确定是否存在任何异常或计时限制不符合DAC8552数据表中列出的规范。
此致,
马特