本来是为了“基于Z-stack的UART通信”讲课准备的资料。
后来把立哥坑上去了,这些东西就用不上了。。。
觉得扔了有点可惜。(好歹也花了时间准备的)
所以就丢到这里来了。。。(没什么好看的,打完酱油你可以回去了)
网上和论坛里面很多帖子都把精力集中到分析协议栈的串口工作机制上,比如分析 DMA工作原理,中断工作原理,然后分析输入和输出 Buffer 的处理等内容,学习者跟着协议栈的串口底层一直到顶层转圈、转圈、再转圈,蒙圈了。
实际上,从应用角度讲,我们根本就没有必要去深入的追究 Zstack 中串口的工作机制,也没有必要去搞清楚到底是怎么 DMA 和 Interrupt 的,我们只要调用几个简单函数就可以正常使用串口了。其实协议栈已经把使用串口的条件准备好了,我们何必再纠结硬件底层实现呢?应用者应该把协议栈看作一个平台,平台之上的应用才是我们的目标。下面我就讲一下如何利用协议栈现有平台来实现自己的串口应用。这里我所提及的现有平台即是Zstack自带的MT包,其实 Zstack 中的这个 MT包功能相当强大,通过 TI 提供的 ZTOOL工具可以用串口的方式同整个协议栈进行交互,在我们编写 Zigbee应用程序的过程中,很多不知道该如何调用的函数都能在 MT 中找到参考!这个不多说了,有兴趣的同学可以去专门研究一下 MT包。
——————————————————
串口——UART
UART:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART,读音/'ju:art/)
它包括了RS232、RS449、RS423、RS422和RS485等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。
UART是一种异步收发传输器,是电脑硬件的一部分,将资料由串行通信与并行通信间作传输转换。UART通常用在与其他通讯接口(如EIA RS232)的连结上。
整个例程很简单,分三步走,实际上就是三个语句,不过我们可以了解一下具体原理。步骤如下:
1.串口初始化
【void MT_UartInit() 】
2.登记任务号
【void MT_UartRegisterTaskID(byte taskID)】
3.串口发送
【void MT_UartProcessZToolData(uint8 port, uint8 event)
——————————————————
串口初始化 MT_UartInit
void MT_UartInit ()
{//这个是 MT中的一个串口初始化函数,主要作用是初始化串口工作的一些规矩。
halUARTCfg_t uartConfig;
/* Initialize APP ID */
App_TaskID = 0; //处理串口数据的任务ID,可以先不管。
/* UART Configuration */
uartConfig.configured = TRUE;
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
//默认38400 波特率;可以更改,但是可能有新问题,具体解释内容比较多,我不说。
uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;
//禁止硬件流控,如果你的串口只有RXD,TXD 和 GND三条线,必须这么做。
uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
——————————————————
串口发送 MT_UartProcessZToolData
——————————————————
UART
ASD
DASD
实验分三步(zigbee运作):
1. 串口初始化
2. 登记任务号
3. 串口发送
第一步: 串口初始化
配置窗口号、波特率、流控、校验位
HAL\Target\CC2530EB\drivers 的 hal_uart.c 文件
包括了串口初始化、发送、接收等函数
————
UART 通用异步收发传输器(RXD,TXD)
USART 追加同步序列信号(RXD,TXD,RTS,CTS)
DMA 直接存储器访问
ISR 中断服务程序
USB 通用串行总线
SampleApp_Init
【UART
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),
通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。
将资料由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,
通常集成于其他通讯接口的连结上。
USART
在UART上追加同步方式的序列信号变换电路的产品,
被称为USART(Universal Synchronous Asynchronous Receiver Transmitter)。
】
halUARTCfg_t 串口通讯的配置 结构体
第二部: 登记任务号
MT_UartRegisterTaskID(task_id); //登记任务号
第三部: 串口发送
SampleApp_Init();
MT_UartInit();
MT_UartRegisterTaskID(task_id);
HalUARTWrite(0,"Hello World\n",12); //(串口 0, '字符', 字符个数)
ZIGBEEPRO ZTOOL_P1
MT_TASK MT_SYS_FUNC MT_ZDO_FUNC
name 寄存器 位 名称 复位 R / W 描述 备注
PxSEL 端口x功能选择寄存器 7:0 0x00 【通用I/O】外设I/O P2SEL.3-7不是功能选择寄存器
P2SEL 端口1外设优先级控制寄存器
PxDIR 方向选择寄存器 7:0 【输入】输出
PxINP 端口x输入模式 7:0 【上拉/下拉】三态 P1INP.0保留|P2INP.5-7【上拉】下拉
IENx 中断使能寄存器
PxIEN 端口x中断使能寄存器
PxIFG 中断状态标志寄存器
PICTL 中断控制寄存器
PERCFG 外设控制寄存器
CLKCONCMD 时钟控制命令寄存器
CLKCONSTA 时钟控制状态寄存器
PCON 供电模式控制寄存器
SLEEPCMD 睡眠模式控制寄存器
SLEEPSTA 睡眠模式状态寄存器
UxCSR-USARTx UART 控制和状态 寄存器
UxUCR-USARTx UART 控制寄存器 寄存器
UxDBUF-USARTx 接收/传送数据缓存寄存器
BUAD_M 波特率控制寄存器
UxGCR UART 通用控制寄存器
TCON 中断标志寄存器
IRCON2 中断标志寄存器