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.

[参考译文] CCS/TM4C1294NCPDT:无法通过在 COM 端口中使用 UDMA 观察 UART 传输的数据

Guru**** 2511415 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/779785/ccs-tm4c1294ncpdt-not-able-to-observe-uart-transferred-data-by-using-udma-in-com-port

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio


HII、

我正在使用 uDMA 控制器将数据从存储器传输到 UART。如果我使用(HWREG (UART1_BASE + UART_O_CTL)|= UART_CTL_LBE)启用回路、那么我们能够在 ui8RxBufA、ui8RxBufB 缓冲区中看到数据、但无法在 COM 端口中传输数据。

#define MEM_buffer_size 1024
#define UART_TXBUF_SIZE 256
#define UART_RXBUF_SIZE 256

static uint8_t g_ui8TxBuf[UART_TXBUF_SIZE];
static uint8_t g_ui8BufA[UART_UART32_size

=
静态 UART32_UART1uuuuuuuuuuuuuuuuuuuuuut




状态;i32uuuuuuuuuuuuuuuuuuuuuuuuuut 1 u32uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuut 1 ut 1 u32uuuuuuuuuuuuuuuuuuuuuuuuut 1 ut 1 uart32uuuuuuuuuut

ui32Status);


ui32Mode = uDMAChannelModeGet (uDMA_CHANGE_UART1RX | UDMA_PRI_SELECT);
if (ui32Mode = uDMA_MODE_STOP)
{
g_ui32RxBudma++;
uDMAChannelTrSet (UART1_UART1_UART+)= u64_UART_UART_UART1AM_MODE+、UART_UART1+





(UART_UART+) UCC_UCC_U64_UCC_U64_U64_UART+(UART+) U64_UART_UART_UART_UART+= u_UCC_U64_U80+(u_UCC_U64_U64_UART+);u_UCC_U64u_UCC_U64u+(u_UART_UART_UART_UART_UART_UART+) U64_U64u_R+(UCC_UCC_






}

void InitUART1传输(void)
{
uint_fast16_t ui16Idx;
for (ui16Idx = 0;ui16Idx < UART_TXBUF_SIZE;ui16Idx++)
g_ui8TxBuf[ui16Idx ='A';SysART32_Periptl
(UART1_USYSCUSpurb


)外设1 (UART1_SysClipulk_SysConfigh); 115200、UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |UART_CONFIG_PAR_NONE);
UARTFIFOLevelSet (UART1_BASE、UART_FIFO_TX4_8、UART_FIFO_RX4_8);

UARTEnable (UART1_BASE);
UARTDMAEnable (UART1_BASE、UART_DMA_RX | UART_DMA_TX);
HWREG (UART1_BASE + UART_O_CTL)|= UART_CTL_LBE;
IntEnable (INT_UART1);

//// 接收参数
uDMAChannelAttributeDisable (UDMA_CHANNE_UART1RX、UDMA_ATTR_ALTSELECT | UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY | UDMA_REQMASK);
uDMA_ADC_UART1_DMA

(UART4_UART8_DR_UART4_SIZE | UART4_UART4_UARTR_AM_RINC_ADC_ADC_1、UART4_T4_ENDADC_ADC_ADC_1 | UART4_T4_ENTR_UART4_ENDANT_T4_T4_TADC_ADC_ADC_1 | UART4_ENDANT_UARTR_UARTR_8 (UARTR_UARTR_8)| UART4_TADC_ADC_ADC_ADC_ADC_ADC_ADC_ADC_ADC_ADC_1、UART_UART_UART_UART_UART_UART4_SIZE | UART_UART_UART_UART






void translitting paramter uDMAChannelAttributeDisable (UDMA_CHANNE_UART1TX、UDMA_ATTR_ALTSELECT | UDMA_ATTR_HIGH_PRORY | UDMA_ATTR_REQMASK);uDMA_CHANNEL_Enable (UART1_DMA_UART1_UART1_UARTDA_UART8_UARTDA_TR_UDA_UDA_UDAM_UARTDAM_PRECH);UART1_UART1_UART8_UARTDA_UART1_UARTDA_UART1_UARTDA_UART1_UART1_UARTDA_UARTDA_UARTDA_1 (UARTDA_UART1_UART1_UART1_UARTDA_UARTDA_UARTDA_UART1_UARTDA_UART1_UARTDA_UART1_UARTDA_1、UART1_UART1_U







int main (void)
{
ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);
SysCtlPeripheralClockGating (tron);SysCtl_USPEL (USYSCT_VCO_480)、SYSCPEDMA_Enable
(SYSC_PeripheralkHz
)
IntEnable (INT_UDMAERR);
uDMAEnable();
uDMAControlBaseSet (pui8ControlTable);
InitUART1 Transfer();
}

谢谢、此致、

Anamika

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否将 GPIO 引脚 PB0和 PB1用作 U1Tx 和 U1Rx? 我看不到您在哪里完成了该配置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob Crosby 先生:

    在将 GPIO 引脚 PB0和 PB1配置为 U1Tx 和 U1Rx 后、我能够获得输出。 感谢先生的快速回答。

    谢谢、
    Anamika。