zstack协议中UART的两种模式

本文介绍了UART协议栈中的两种数据传输模式:中断模式和DMA模式,并详细阐述了这两种模式在串口收发过程中的应用。通过对UART配置结构的分析,揭示了不同模式下数据如何从串口缓存移动到应用程序。

http://wjf88223.blog.163.com/blog/static/3516800120104179327286/

 

协议栈中UART有两种模式:
1、中断
2、DMA

对于这两种模式具体运用在哪一步,纠结了很久.通过UART配置结构:
typedef struct
{
  uint8 *rxBuf;
  uint8 rxHead;
  uint8 rxTail;
  uint8 rxMax;
  uint8 rxCnt;
  uint8 rxTick;
  uint8 rxHigh;

  uint8 *txBuf;
#if HAL_UART_BIG_TX_BUF
  uint16 txHead;
  uint16 txTail;
  uint16 txMax;
  uint16 txCnt;
#else
  uint8 txHead;
  uint8 txTail;
  uint8 txMax;
  uint8 txCnt;
#endif
  uint8 txTick;

  uint8 flag;

  halUARTCBack_t rxCB;
} uartCfg_t;

可以看到协议栈为串口收发分别配置了一块内存空间rxBuf和txBuf,具体在HalUARTOpen()里配置.
而中断与DMA这两种模式具体就运用于 数据在串口缓存U0_1DBUF与rxBuf/txBuf之间传送 的过程.

串口接收DMA模式:(data) —> U0DBUF —(DMA)—> rxBuf —> HalUARTRead()读取rxBuf数据进行处理
串口接收中断模式:(data) —> U0DBUF —(中断)—> rxBuf —> HalUARTRead()读取rxBuf数据进行处理


串口发送DMA模式:(data) <— U0DBUF <—(DMA)— txBuf
串口发送中断模式:(data) <— U0DBUF <—(中断)— txBuf

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值