基于ZigBee技术的电量数据传输系统(2)
3软件设计
软件设计包括计量模块SPI接口的数据写入和输出、CC2530模块数据接收和发送、CC2530与上位机通信。软件设计流程图如图6所示。
3.1SPI接口的数据写入
SPI接入口程序是在VC++环境中编译的。在软件设计的过程中需要考虑占空比、频率、波特率等因素。为了使计量更精准,选择24.576MHz的晶振,任一次写操作约5μs。具体流程图如图6所示。
SPI接口写入程序:
WriteSpi(comdata)
{
;EnableSPI
CS=1;//初始CS为高电平
SCLK=0;//初始SCLK为低电平
CS=0;//CS变为低电平
;Send8bitsCommandtoSPI
//把8个比特的命令输入SPI
for(n=7;n>=0;n--)//经过32个时钟脉
冲CS由低到高完成
SPI的写入
{
SCLK=1;
DIN=Com.n;
Nop
Nop
Nop
SCLK=0;
}
;DisableSPI
CS=1;//CS为高电平SPI停止写入
}
SPI接口与CC2530ZigBee模块连接,把采集到的数据发送给CC2530协调器模块,ZigBee自带协议栈,协议定义了一系列的通信标准,通信双方按照这一标准进行正常的数据收发。对于使用者来说,只需要对应用层进行C语言程序开发实现所需要的功能即可。
3.2串口收发数据程序
串口是开发板和上位机交互的重要工具,ZigBee协议栈中对串口初始化所需要的函数进行了定义。使用串口的基本步骤有两步:第一是初始化串口,包括设置波特率、中断等;第二则是向发送缓冲区发送数据或接收数据。下面是其中的主要程序:
voidSerialApp_Init(uint8task_id)
{
……
uartConfig.callBackFunc=SerialApp_CallBack;
//调用SerialApp_CallBack函数,对串口内容进行查询
……
if((event&(HAL_UART_RX_FULL|HAL_UART_RX_ABOUT_FULL|HAL_UART_RX_TIMEOUT))&&
#if(SERIAL_APP_LOOPBACK
(SerialApp_TxLen<SERIAL_APP_TX_MAX))
#else
!SerialApp_TxLen)
#endif
{
SerialApp_Send();
期刊库(http://www.zgqkk.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导合作,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。
【免责声明】本文仅代表作者本人观点,与投稿辅导_期刊发表_中国期刊库专业期刊网站无关。投稿辅导_期刊发表_中国期刊库专业期刊网站站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
投稿辅导服务咨询与期刊合作加盟
陆老师联系QQ:
蒋老师联系QQ:
刘老师联系QQ:
联系电话:18015016272
17327192284
投稿辅导投稿邮箱:zgqkk365@126.com


