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.

[参考译文] DAC8552:DAC8552只提供零或满刻度输出

Guru**** 2015290 points
Other Parts Discussed in Thread: DAC8552
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/570021/dac8552-dac8552-gives-only-zero-or-full-scale-output

部件号:DAC8552

您好,

现在,我正在尝试通过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数据表中列出的规范。

    此致,
    马特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Howdy Simon,

    您是否能够收集上述建议的图片? 或者,您或许能够解决此问题?

    此致,
    马特