主题中讨论的其他器件:DAC161S055EVM、 ADC161S626EVM
您好!
我的测试应用基本上是获取模拟信号的输入(信号发生器的正弦波)使用 ADC161S626EVM BoosterPack 对其进行转换、并在不经过任何修改的情况下通过 DAC161S055EVM BoosterPack 输出相同的信号、两个 BoosterPack 都通过 SPI 接口进行通信。
问题是输出信号(蓝色)看起来是冻结的、比如代码的某些部分需要太长的时间才能被处理。
在示波器的图片中:黄色(输出)、蓝色(输入信号)。
代码如下所示。 我已使其功能初始化 ADC 和 DAC。 在 main 中 、我只需调用这些函数、并在 while (1)内执行读/写例程。
现在、我确定到底是什么冻结了代码、或者处理时间太长。 如果有任何帮助,将不胜感激。
PS.:我尝试使用代码突出显示器、我希望它能起作用...
#include #include #include #include "inc/hw_memmap.h" #include "driverlib/gpio.h" #include "driverlib/pin_map.h" #include "driverlib/ssi.h" #include "driverlib/syscValue.h" #include "driverlib/uart.h" #include "utils/ustdio.h" ;iint32uintuh 、i20uintu_uinth 和 uintu32uintuh、i_uintuintuintuh、inc.h、iintuintuintuinth 和 uintuintu32h、uintuintuintuintuintuintuinth uint32_t pui32DataRx[3]、补码、虚拟; //初始化 PORTD =>针对 DAC 空 InitPORTD (void){ SysCtlPeripheralEnable (sysctl_Periph_GPIOD); while (!SysCtl_Periph_GPIOD);while (!SysCtl_PinTS_Output_GPIOD );GPIOP2_BASE (GPIO_PIN_GPIO2);GPIO_PIN_GPIOP2_BASE) //初始化 PORTD => ADC void InitPORTE (void){ SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE)的 FSS; while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOE)){GPIOCtlPeripheralEnable (GPIO_Porte _BASE、GPIO_PIN_4 );GPIO_PIN_4引脚 GPIO_PIN_4引脚 void InitADCSSI (){ //必须启用 SSI0外设才能使用。 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD); SysCtlPeripheralEnable (SYSCTL_Periph_SSI2); //为端口 A2、A3、A4和 A5上的 SSI0功能配置引脚多路复用。 GPIOPinConfigure (GPIO_PD3_SSI2CLK); //GPIOPinConfigure (GPIO_PD2_SSI2FSS);PORTE4 (InitPORTE)保持的函 数 GPIOPinConfigure (GPIO_PD0_SSI2XDAT1);GPIOPinConfigure (GPIO_PD1_SSIDAT0);/配置 GPIO 引脚设置。 此功能还将 这些引脚的//控制提供给 SSI 硬件。 请参阅数据表来 //查看每个引脚分配的函数。
GPIOPinTypeSSI (GPIO_PORTD_base、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3); SSIConfigSetExpClk (SSI2_base、ui32SysClkFreq、SSI_FRF_MOTO_MOTO_MODE_3、 SSI_MODE_MASTER、 5000000、16); SSIAdvModeSet (SSI2_base、SSI_ADV_MODE_LEGACWE); //启用 SSI0模块。
SSIEnable (SSI2_base); } void InitDACSSI (void){ //uint32_t pui32DataRx[3]; SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ); SysCtlPeripheralEnable (SYSCTL_Periph_SSI3); GPIOP3Q_GPIO1 ;SysCtlGPIO0_GPIOQ1_Q1 (GPIOQ0_P3Q_GPIOQ0_GPIO3) GPIOPinConfigure (GPIO_PQ2_SSI3XDAT0); GPIOPINTypeSSI (GPIO_PORTQ_BASE、GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3); SSIConfigSetExpClk (SSI3_base、ui32SysClkFreq、SSI_FRF_MOTO_MODE_0、SSI_MODIM_MASTER_0、SSI_MODE_0、SSI_MODIM_0 20000000、8); SSIEnable (SSI3_base); //while (SSIDataGetNonBlocking (SSI2_base、&pui32DataRx[0])){ //} // 初始化 DAC void InitDAC (void){ //初始化 DAC uint8_t 命令[2];0xint8_uint2 = 0xint2;uint2 = 0xintu0[uint2};uint2 = 0xintuint2 = 0xintuint2;uint2 = 0xintuint2 = 0xintuint2;uintuint2 = 0xint2 = 0xint2;uintuint2 = 0xint2 = uintuint2;uintuint2 = uint2 = 0xint2 uintindex++){ GPIOPinWrite (GPIO_PORTD_base、GPIO_PIN_2、0); SSIDataPut (SSI3_base、command[uintindex]); while (SSIBusy (SSI3_base)){ } SSIDataPut (SSI3_base、first_data[uintindex]); while (SSIBusy (SSI3_base)){SYSC_INTS3_INTS_UST_INTSN (s2_INTS_INTS_INTS_INUSTRAM);while (ssn_SYSC_SC_INTS_INTS_INTS_INTS_INTS_INTS3_INTS_INTS_INTS_INTS_INST_INTS_INUSTRAM);} InitDACSSI (); InitDAC (); while (1){ //清空 FIFO while (SSIDataGetNonBlocking (SSI2_base、&pui32DataRx[0])}{} GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_4、0); //从 SPI 读取 (ui32DataRx+);SS32ui2+索引(SSu32a+= SSu32ue2+ 、SSue2+索引) 伪); adcRX[ui32Index]=虚拟; } GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_4、GPIO_PIN_4); convertedValue =(adcRX[0]<<2)|(adcRX[1]>> 14); GPIOPinWrite (GPIO_PORTD_BASE、GPIO_PIN_2、0); //向 SPI SSIDataPut (SSI3_base、0x08)写入命令; while (SSIBusy (SSIID_BASE ) } (SSIID3) 、SSIIDP_BASE (SSIID3);while (SSIIDIID3) 1 (1)(1)(1)(1)+ SSIIDPSIMP_3)(1 (1)(1)(1)、 1 (1 (1)+ SSIIDPIDPIDSIMP_BASE)(1)(1)(2)(1 (1)、2)(1 (1 (1)(1)(1)、2)