ZigBee On Windows Mobile--2.硬件和软件设计
继续上一篇”ZigBee On Windows Mobile--1.背景和结构”,今天来讲讲硬件和软件设计。硬件设计主要是做ZigBee模块,输出文件一般包括原理图和PCB图。PCB图是最终给制板厂商的文件,制板厂商将PCB文件转化为Gerb文件进行PCB板加工。软件设计包括两部分,即ZigBee模块中的嵌入式程序和Windows Mobile端的应用程序,这两个软件模块运行在不同的平台之上,硬件上通过UART口进行通信。
硬件设计使用了比较传统的Protel99se,采用了MC13192+GB60的设计和单芯片MC13213的设计原理图下载链接如下:
https://files.cnblogs.com/dearsj001/GB60+13192.pdf
https://files.cnblogs.com/dearsj001/MC13213.pdf
硬件设计也没有太多可以讲述的,只要按照Freescale给的参考设计,自己根据需求,做相应的小小修改就可以。比较关键的是天线的设计。我们自己没有测试设备(频谱仪一个就10几W),一般而言,就使用给出的参考设计天线,有倒F天线(非平衡式)、双鞭天线(平衡式)等。另外就是板材的选择和板厚也和通信距离有相当大的关系。
嵌入式软件的设计采用CodeWarrior for HCS08 V3.1 开发环境,运用“前后台系统”的模式,前后台系统的基本思想是:硬件中断函数中只做非常少量而且是绝对必须的操作:如设置中断寄存器、保存数据寄存器等,然后置后台标志位,随即退出中断。这些操作称为“前台操作”。而后台操作是一个开放中断的无限循环。在循环中检查各后台标志位,如果某一标志位被置位,则说明有中断发生,立即调用相应的中断服务任务,这些任务被称为“后台操作”。
主程序流程如下图1所示:
图1主程序流程图
TargetInit()执行系统初始化操作,主要包括HCS08的IO、UART和Timer等模块的初始化。ConfigInit()执行配置初始化操作,主要包括SMAC协议和串口通信协议配置。ScheduleLoop()为主调度循环,根据状态来执行不同的任务,如下图2所示。其中的SYS_FEED_DOG()是指喂看门狗操作。
图2 主调度循环流程图
在Windows Mobile设备上运行的用户应用程序,主要执行信息交互和显示功能。进一步说,用户要通过UI将命令发送给ZigBee模块,同时,Windows Mobile设备将ZigBee模块的情况通过UI呈现给用户。在Microsoft Visual Studio 2005的IDE下,安装一个最新的Windows Mobile 6 professional SDK,配合自带的Emulator就可以进行开发和调试。软件可以分为几个模块:串口通信部分、界面UI部分和数据处理部分。由于本人比较熟悉C++,所以我选用了native code进行开发,建立一个基于对话框的MFC工程,将需要的控件加入对话框。具体流程如下图3所示。
图3 Windows Mobile设备应用程序流程图
其中的对话框初始化包括了界面的初始化,要强调的是串口的初始化。我们这里采用的串口参数如下:速率9600bps,1个停止位,无奇偶校验。
工程的运行环境:VS2005 with SP1+.NET CF SP2+windows mobile professional SDK
工程源代码下载:https://files.cnblogs.com/dearsj001/WirelessFutureWM5_Emulator.rar
好了,今天就啰嗦到这里,明天继续讲调试,包括设备调试和模拟器调试。Enjoy!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构