- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何在Zstack中使用串口
如何在Zstack 中使用串口
By:kennan 2011.8.17
以下基于Zstack2.3.1 -1.4.0 协议栈,处理器是CC2530
TI Zstack 应该是国内Zigbee 学习者使用和研究最多的协议栈了。串口作为一种最简单的
协议栈和调试者接口,在Zigbee 的学习和应用过程中具有非常重要的作用。
然而论坛和群里有很多初学者在串口问题上纠结良久也没有在 PC 的串口终端上显示任
何内容,甚至于造成学习者到此就放弃了。网上关于如何串口的工作机制和如何使用串口的
问题上已经有太多帖子了,但是貌似很多人看完之后还是没有学会使用串口,针对这一个问
题,我再写一篇文档,希望能够对需要学习Zigbee 的同学们有所帮助。
一、介绍
网上和论坛里面很多帖子都把精力集中到分析协议栈的串口工作机制上,比如分析DMA
工作原理,中断工作原理,然后分析输入和输出Buffer 的处理等内容,学习者跟着协议栈的
串口底层一直到顶层转圈、转圈、再转圈,蒙圈了。
实际上,从应用角度讲,我们根本就没有必要去深入的追究Zstack 中串口的工作机制,
也没有必要去搞清楚到底是怎么DMA 和Interrupt 的,我们只要调用几个简单函数就可以正
常使用串口了。其实协议栈已经把使用串口的条件准备好了,我们何必再纠结硬件底层实现
呢?应用者应该把协议栈看作一个平台,平台之上的应用才是我们的目标。下面我就讲一下
如何利用协议栈现有平台来实现自己的串口应用。这里我所提及的现有平台即是Zstack 自带
的MT 包,其实Zstack 中的这个MT 包功能相当强大,通过TI 提供的ZTOOL 工具可以用串
口的方式同整个协议栈进行交互,在我们编写Zigbee 应用程序的过程中,很多不知道该如何
调用的函数都能在 MT 中找到参考!这个不多说了,有兴趣的同学可以去专门研究一下MT
包。
二、使用方法
在 MT 包中,已经有了串口初始化即串口数据处理函数可用,关键的几个函数出现在
MT_Uart.c 文件中。我们拿出来几个关键函数说明一下(我捡重要语句注释) :
第一个函数
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 = FALSE;//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;
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
uartConfig.callBackFunc = MT_UartProcessZToolData;
//如果编译的时候选择使用ZTOOL ,那么MT_UartProcessZtoolData 将会处理串口接到的数
//据串
#elif defined (ZAPP_P1) || defined (ZAPP_P2)
uartConfig
文档评论(0)