/* UART objects */
UARTCC26XX_Object uartCC26XXObjects[CC1310DK_5XD_UARTCOUNT];
unsigned char uartCC26XXRingBuffer[CC1310DK_5XD_UARTCOUNT][1024];
/* UART hardware parameter structure, also used to assign UART pins */
const UARTCC26XX_HWAttrsV2 uartCC26XXHWAttrs[CC1310DK_5XD_UARTCOUNT] = {
{
.baseAddr = UART0_BASE,
.powerMngrId = PowerCC26XX_PERIPH_UART0,
.intNum = INT_UART0_COMB,
.intPriority = ~0,
.swiPriority = 0,
.txPin = UART_TX,
.rxPin = UART_RX,
.ctsPin = PIN_UNASSIGNED,
.rtsPin = PIN_UNASSIGNED,
.ringBufPtr = uartCC26XXRingBuffer[0],
.ringBufSize = sizeof(uartCC26XXRingBuffer[0])
}
};
1. 以上代码中,数组uartCC26XXRingBuffer是否就是串口的接收缓存区?
2. 如果是的话,假设芯片一次接收的数据长度大于缓存区的大小,是否会造成死机?如果不会,底层是如何处理长度大于缓存区大小的数据的?
Viki Shi:
1、勘误,ring buffer解释如下
The RingBuf serves as an extension of the FIFO. If data is received when UART_read() is not called, data will be stored in the RingBuf. The functionality of the RingBuf has been tested with a size of 32. This size can be changed to suit the application.
2、请问你需要发送多大的数据?此值可以改大
user5360734:
回复 Viki Shi:
目前的使用场景是,CC1310芯片与另一个芯片A直连,且设备处于供电状态。在烧录芯片A的程序时,A芯片的端口会出现电平变换,导致CC1310的串口会收到不定长度的数据。如果这个数据的长度大于底层的缓存区大小,是否就死机或者出现其他异常,导致芯片无法工作?
Viki Shi:
回复 user5360734:
ring buffer是覆盖式的,不会溢出
user5360734:
回复 Viki Shi:
也就是说,底层是使用类似循环队列的方式进行串口数据接收的是吗?
Viki Shi:
回复 user5360734:
是的,ring buffer就相当于circular buffer