为什么rx_callback_size定义为dsps-v_5.150.2中的8例示例?

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
2个帖子/ 0新
最后一篇
Ratheesht.
离线
最后一次露面:1年11个月前
加入:2017-01-02 11:08
为什么rx_callback_size定义为dsps-v_5.150.2中的8例示例?

嗨对话支持团队,

在DSPS-V_5.150.2中,命名为rx_callback_size的宏被定义为8.它意味着从UART接收的每8个字节的数据之后,UART Rx ISR循环(void UART_SPS_RCV_DATA_AVAIL_ISR(void)停止接收字节并调用回调函数以下。
我的理解是正确的还是不正确的?如果我的理解是正确的,那么在一次超过8bytes时会收到超过8字节,那么它将错过剩余的字节。请给出一些解释吗?

if(rcv_bytes)
{
void(* rx_callback)(uint8_t,uint32_t);

//重置Rx参数
uart_sps_env.rx.bufptr = null;

//检索回调指针
rx_callback = uart_sps_env.rx.callback;

if(rx_callback!= null)
{
//清除回调指针
UART_SPS_ENV.RX.CALLBACK = null;

//呼叫处理程序
rx_callback(spi_status_ok,rcv_bytes);
}
别的
{
assert_err(0);
}
}

设备:
mt_dialog.
离线
最后一次露面:2个月2周前
职员
加入:2015-06-08 11:34
嗨Ratheesht,

嗨Ratheesht,

rx_callback_size值遵循UART FIFO的配置,这意味着当UART的FIFO达到8个字符的数量时,设备将触发中断,并且那件为什么缓冲区的分配遵循rx_callback_size,接收的流程字节由H / W本身停止而不是通过代码(只要您保留原始DSPS FW)。所以是的,从角度来看,你的理解是正确的。现在,由于您提到的原因,就是为什么UART的FIFO配置为在UART FIFO的一半中运行,因此当外部设备发送超过8个字节时,外部设备将发送的额外数据(如果它错过了流关闭)将存储在FIFO中,不会错过。

谢谢mt_dialog.