主题中讨论的其他器件:TIDM-TM4C129POEAUDIO
大家好、
plz 帮助我解决我的问题。
1-如何设置 ADC 时钟速度? 我能否为 ADC0和 ADC1配置不同的采样率?
2-我正在将 ADC0 & ADC1用于序列发生器0,当启用 DMA 以将数据从 FIFO 获取到全局缓冲区时,我会为两个 ADC 获得相同的值。
3 -我在从模式下使用 I2C。 我从主器件接收到正确的数据、但当我向主器件发送数据时、它将无法正常工作、我可以为其做什么。
谢谢你。
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.
大家好、
plz 帮助我解决我的问题。
1-如何设置 ADC 时钟速度? 我能否为 ADC0和 ADC1配置不同的采样率?
2-我正在将 ADC0 & ADC1用于序列发生器0,当启用 DMA 以将数据从 FIFO 获取到全局缓冲区时,我会为两个 ADC 获得相同的值。
3 -我在从模式下使用 I2C。 我从主器件接收到正确的数据、但当我向主器件发送数据时、它将无法正常工作、我可以为其做什么。
谢谢你。
Amit、您好!
1 -我通过配置了系统时钟
SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);
和 DMA 配置
#define MEM_buffer_size 8.
静态 uint32_t g_ui32Src3ABuf[MEM_buffer_size];
静态 uint32_t g_ui32Src0BBuf[MEM_buffer_size];
静态 uint32_t g_ui32Src3ABuf[MEM_buffer_size];
静态 uint32_t g_ui32Src0BBuf[MEM_buffer_size]
SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
SysCtlPeripheralEnable (SYSCTL_Periph_ADC1);
ADCClockConfigSet (ADC0_BASE、ADC_CClock_SRC_ALTCLK | ADC_CClock_RATE_FULL、8);
ADCClockConfigSet (ADC1_base、ADC_CClock_SRC_PLL | ADC_CClock_RATE_FULL、8);
SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |GPIO_PIN_3);
GPIOPinTypeADC (GPIO_PORTD_base、GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 |GPIO_PIN_7);
GPIOPinTypeADC (GPIO_Porte _BASE、GPIO_PIN_4 | GPIO_PIN_5);
GPIOPinTypeADC (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_5);
GPIOPinTypeADC (GPIO_PORTD_base、GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 |GPIO_PIN_3);
ADCSequenceStepConfigure (ADC0_BASE、0、0、ADC_CTL_CH0);
ADCSequenceStepConfigure (ADC0_BASE、0、1、ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC0_BASE、0、2、ADC_CTL_CH2);
ADCSequenceStepConfigure (ADC0_BASE、0、3、ADC_CTL_CH3);
ADCSequenceStepConfigure (ADC0_BASE、0、4、ADC_CTL_CH4);
ADCSequenceStepConfigure (ADC0_BASE、0、5、ADC_CTL_CH5);
ADCSequenceStepConfigure (ADC0_BASE、0、6、ADC_CTL_CH6);
ADCSequenceStepConfigure (ADC0_BASE、0、7、ADC_CTL_CH7 | ADC_CTL_END);
ADCSequenceStepConfigure (ADC1_base、0、0、ADC_CTL_CH8);
ADCSequenceStepConfigure (ADC1_base、0、1、ADC_CTL_CH9);
ADCSequenceStepConfigure (ADC1_base、0、2、ADC_CTL_CH10);
ADCSequenceStepConfigure (ADC1_base、0、3、ADC_CTL_CH11);
ADCSequenceStepConfigure (ADC1_base、0、4、ADC_CTL_CH12);
ADCSequenceStepConfigure (ADC1_base、0、5、ADC_CTL_CH13);
ADCSequenceStepConfigure (ADC1_base、0、6、ADC_CTL_CH14);
ADCSequenceStepConfigure (ADC1_base、0、7、ADC_CTL_CH15 | ADC_CTL_END);
ADCSequenceConfigure (ADC0_BASE、0、ADC_TRIGGER_ALE一直、0);
ADCSequenceConfigure (ADC1_base、0、ADC_TRIGGER_ALE一直、1);
ADCReferenceSet (ADC0_BASE、ADC_REF_EXT_3V);
ADCReferenceSet (ADC1_base、ADC_REF_EXT_3V);
ADCSequenceEnable (ADC0_BASE、0);
ADCSequenceEnable (ADC1_BASE、0);
uDMAEnable();
uDMAControlBaseSet (udmaCtrlTable);
uDMAChannelAssign (UDMA_CH24_ADC1_0);
ADCSequenceDMAEnable (ADC0_BASE、0);
ADCSequenceDMAEnable (ADC1_BASE、0);
// uDMAChannelAttributeDisable (UDMA_CHANGE_ADC0、UDMA_ATTR_ALL);
// uDMAChannelAttributeDisable (UDMA_SEC_CHANGE_ADC10、UDMA_ATTR_ALL);
// uDMAChannelAttributeEnable (UDMA_CHANGE_ADC0、UDMA_ATTR_USEBURST);
// uDMAChannelAttributeEnable (UDMA_SEC_CHANGE_ADC10、UDMA_ATTR_USEBURST);
uDMAChannelControlSet (UDMA_CHANNEL_ADC0 | UDMA_PRI_SELECT、UDMA_SIZE 32 | UDMA_SRC_INC_NONE | UDMA_DST_ARC_32 | UDMA_INC_1);
uDMAChannelControlSet (UDMA_CHANNEL_ADC0 | UDMA_ALT_SELECT、UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_ARC_32 | UDMA_INC_1);
uDMAChannelControlSet (UDMA_SEC_CHANNEL_ADC10 | UDMA_PRI_SELECT、UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 | UDMA_ARB_1);
uDMAChannelControlSet (UDMA_SEC_CHANNEL_ADC10 | UDMA_ALT_SELECT、UDMA_SIZE_32 | UDMA_SRC_INC_NONE | UDMA_DST_INC_32 | UDMA_ARB_1);
uDMAChannelEnable (UDMA_CHANGE_ADC0);
uDMAChannelEnable (UDMA_SEC_CHANGE_ADC10);
uDMAChannelTransferSet (UDMA_CHANGE_ADC0 | UDMA_PRI_SELECT、UDMA_MODE_PINGONG、(void *)(ADC0_BASE + ADC_O_SSFIFO0)、g_ui32SNABuf、sizeof (g_ui32SrcBABuf);
uDMAChannelTransferSet (UDMA_CHANGE_ADC0 | UDMA_ALT_SELECT、UDMA_MODE_PINGONG、(void *)(ADC0_BASE + ADC_O_SSFIFO0)、g_ui32Src0BBuf、sizeof (g_ui32Src0BBuf));
uDMAChannelTransferSet (UDMA_SEC_CHANGE_ADC10 | UDMA_PRI_SELECT、UDMA_MODE_PINGONG、(void *)(ADC1_BASE+ADC_O_SSFIFO0)、g_ui32Src1ABuf、sizeof (g_ui32Src1ABuf);
uDMAChannelTransferSet (UDMA_SEC_CHANGE_ADC10 | UDMA_ALT_SELECT、UDMA_MODE_PINGONG、(void *)(ADC1_BASE+ADC_O_SSFIFO0)、g_ui32Src1BBuf、sizeof (g_ui32Src1BBuf);
uDMAChannelRequest (UDMA_CHANGE_ADC0);
uDMAChannelRequest (UDMA_SEC_CHANGE_ADC10);
ADCIntEnableEx (ADC0_BASE、ADC_INT_DMA_SS0);
ADCIntEnableEx (ADC1_base、ADC_INT_DMA_SS0);
ADCIntEnable (ADC0_BASE、0);
ADCIntEnable (ADC1_BASE、0);
IntEnable (INT_ADC0SS0);
IntEnable (INT_ADC1SS0);
IntEnable (INT_UDMA);
这将提供 ADC 数据、但始终不正确。 这是否有任何错误?
我尝试了很多次、但从未得到正确的结果