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

2019-07-20 02:58发布

大家好,我在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]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。