OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3404|回复: 5

『求助』TI DAC芯片无输出电压,stm32F7

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-8-27
在线时间
10 小时
发表于 2019-3-25 17:08:11 | 显示全部楼层 |阅读模式
1金钱
大家好,我在STM32F7上使用DAC60508芯片,60508是12位精度,24位命令长度,SPI接口的芯片。在初始化SPI后,我发送了3个字节,并使用示波器检查SCL、SDI、CS的波形,它似乎是正确的,但我无法检测到任何输出电压。
这个SPI2代码在另一块热偶芯片上通信没问题。

[mw_shl_code=applescript,true]        static void MX_SPI2_Init(void)

         {
          LL_SPI_InitTypeDef SPI_InitStruct;

          LL_GPIO_InitTypeDef GPIO_InitStruct;

          /* Peripheral clock enable */
          LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_SPI2);

          /**SPI2 GPIO Configuration  
          PC2   ------> SPI2_MISO
          PC3   ------> SPI2_MOSI
          PB10   ------> SPI2_SCK
          */
          GPIO_InitStruct.Pin = LL_GPIO_PIN_2;
          GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
          GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
          GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
          GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
          GPIO_InitStruct.Alternate = LL_GPIO_AF_5;
          LL_GPIO_Init(GPIOC, &GPIO_InitStruct);

          GPIO_InitStruct.Pin = LL_GPIO_PIN_3;
          GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
          GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
          GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
          GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
          GPIO_InitStruct.Alternate = LL_GPIO_AF_5;
          LL_GPIO_Init(GPIOC, &GPIO_InitStruct);

          GPIO_InitStruct.Pin = LL_GPIO_PIN_10;
          GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE;
          GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH;
          GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL;
          GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
          GPIO_InitStruct.Alternate = LL_GPIO_AF_5;
          LL_GPIO_Init(GPIOB, &GPIO_InitStruct);

          /* SPI2 parameter configuration*/
          SPI_InitStruct.TransferDirection = LL_SPI_FULL_DUPLEX;
          SPI_InitStruct.Mode = LL_SPI_MODE_MASTER;
          SPI_InitStruct.DataWidth = LL_SPI_DATAWIDTH_8BIT;
          SPI_InitStruct.ClockPolarity = LL_SPI_POLARITY_LOW;
          SPI_InitStruct.ClockPhase = LL_SPI_PHASE_2EDGE;
          SPI_InitStruct.NSS = LL_SPI_NSS_SOFT;
          SPI_InitStruct.BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV256;
          SPI_InitStruct.BitOrder = LL_SPI_MSB_FIRST;
          SPI_InitStruct.CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE;
          SPI_InitStruct.CRCPoly = 7;
          LL_SPI_Init(SPI2, &SPI_InitStruct);

        //  LL_SPI_SetStandard(SPI2, LL_SPI_PROTOCOL_MOTOROLA);

        //  LL_SPI_EnableNSSPulseMgt(SPI2);

        }

        LL_SPI_SetRxFIFOThreshold(SPI2, LL_SPI_RX_FIFO_TH_QUARTER );   
         while(1)
         {  
              LL_GPIO_ResetOutputPin(SPI2_NSS_GPIO_Port,SPI2_NSS_Pin); //CS
             SPI_SendByte(0x08);    //Output 0 Address      
             SPI_SendByte(0xff);    //Data MSB 8 bits
             SPI_SendByte(0xf0);    //Data LSB 4 bits
             delay_us(120);            
             LL_GPIO_SetOutputPin(SPI2_NSS_GPIO_Port,SPI2_NSS_Pin);  // CS
             delay_ms(50);
         }

        unsigned char SPI_SendByte(unsigned char byte)
        {
            while(LL_SPI_IsActiveFlag_TXE(SPI2)==RESET);
          LL_SPI_TransmitData8(SPI2,byte);

        //  while(! (LL_SPI_IsActiveFlag_RXNE(SPI2)));
        //  return LL_SPI_ReceiveData8(SPI2);
        }[/mw_shl_code]
1553501441(1).jpg

dac60508.pdf

4.71 MB, 下载次数: 4

最佳答案

查看完整内容[请看2#楼]

问题已解决,通信没问题,原因是有个寄存器默认值是0x---,当赋值以后工作正常
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-8-27
在线时间
10 小时
 楼主| 发表于 2019-3-25 17:08:12 | 显示全部楼层
问题已解决,通信没问题,原因是有个寄存器默认值是0x---,当赋值以后工作正常
回复

使用道具 举报

头像被屏蔽

18

主题

184

帖子

0

精华

禁止发言

积分
258
金钱
258
注册时间
2019-1-10
在线时间
10 小时
发表于 2019-3-25 17:12:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-3-26 02:26:05 | 显示全部楼层
检查通信协议,比如你的DAC要求SPI用的什么模式?
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-8-27
在线时间
10 小时
 楼主| 发表于 2019-3-26 08:37:25 | 显示全部楼层
正点原子 发表于 2019-3-26 02:26
检查通信协议,比如你的DAC要求SPI用的什么模式?

原子大大,时序里面应该支持两种模式,cpol=1,cpha=0. 或者cpol=0,cpha=1。
两种情况我都试过,还是不行,另外时序的时间要求也是满足的
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2018-8-27
在线时间
10 小时
 楼主| 发表于 2019-3-26 08:38:10 | 显示全部楼层

还是c啊,不是标准库函数,是LL库
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-10 04:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表