微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > uart 接收中断, 不能超过16字节

uart 接收中断, 不能超过16字节

时间:10-02 整理:3721RD 点击:

请教一下TI的工程师, 一次只能接收16个字节。 我知道cc3200的FIFO只有16个字节。 有什么方法可以接收更多的字节码?

这是代码。

UARTFIFODisable(UARTA1_BASE);
 
// Register interrupt handler for UART
//
MAP_UARTIntRegister(/*UARTA0_BASE*/UARTA1_BASE,UARTIntHandler);


MAP_UARTIntEnable(/*UARTA0_BASE*/UARTA1_BASE,UART_INT_RT);


MAP_UARTConfigSetExpClk(UARTA1_BASE,
MAP_PRCMPeripheralClockGet(PRCM_UARTA1),
UART_BAUD_RATE, (UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE)
); //init uart1;

//
// Configure the UART Tx and Rx FIFO level to 1/8 i.e 2 characters
//
UARTFIFOLevelSet(/*UARTA0_BASE*/UARTA1_BASE ,UART_FIFO_TX1_8,UART_FIFO_RX1_8);

UARTEnable(UARTA1_BASE);

static void UARTIntHandler()
{
unsigned long ulStatus = MAP_UARTIntStatus(UARTA1_BASE, true);
unsigned char temp_data;

if(UART_INT_RT & ulStatus)
{
ulStatus ^= UART_INT_RT;
MAP_UARTIntClear(UARTA1_BASE, UART_INT_RT);
temp_data = HWREG(UARTA1_BASE + UART_O_DR);

Report("%d ", temp_data);
}

MAP_UARTIntClear(UARTA1_BASE, ulStatus);
}

应该有人遇到过吧?  每次接收 不能超过16字节。

一般处理器UART硬件FIFO都不会太大的,16就很大了,以前51的都只有一个字节FIFO。 这个不影响,可自己增加软件的FIFO。

即,中断后,读取硬件FIFO的数据到内存里(通常是一个ring buff)。然后按照你的需求改造,比如达到一定的字节数再处理等。

如果你使用TI-RTOS,里面已经包含了类似的驱动。

可参考下面的两个link,结合看,CC3200的只给了初始化的代码,下面CC26XX还给出了怎么读写。

http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_16_01_14/exports/tirtos_full_2_16_01_14/products/tidrivers_cc32xx_2_16_01_13/docs/doxygen/html/_u_a_r_t_c_c3200_8h.html

http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_20_00_06/exports/tirtos_full_2_20_00_06/products/tidrivers_cc13xx_cc26xx_2_20_00_08/docs/doxygen/html/_u_a_r_t_c_c26_x_x_8h.html

串口一次性发送大于16个字节,  中断只进去16次。   该怎么处理了?  思路是怎样的。   或者用其他 串口接收方法。

 ring buff 这个 free os 可以做的。

你要不要参考一下uart_dma,使用DMA来做。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top