ZigBee_CC2530_0EH_关于协议栈下星状网络粗同步
2017-11-11 10:24
330 查看
对于网址为:https://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/63050.aspx的TI论坛中TI官方员工VV大神的回复,在ZStack协议栈中不提供beacon模式,而beacon模式是同步模式:
所以我打算在应用层通过函数对星状网络实现粗同步,其步骤如下:
在终端节点接受到来自协调器的数据包时,该数据包中包含协调器发出该数据包的时间信息timetmp。通过读取该参数并对我们的定时器2的溢出寄存器和累计时间进行修改来实现时间的粗同步(即忽略数据包的传输和传播时延、终端接收时间以及定时器2的计数器T2M0和T2M1的值修改)。
首先为了保证在终端中的我们使用的软件定时器事件不会产生大的时间差错,我们需要在函数中首先调用osalTimeUpdate()函数来更新定时器列表的timeout值,然后再使用我们自己定义的函数来修改accumulatedOverflowCount。
void osalTimeUpdate_M( uint32 count )
{
halIntState_t intState;
uint32 tmp;
uint32 ticks320us;
uint32 elapsedMSec = 0;
remUsTicks = 0 ;
HAL_ENTER_CRITICAL_SECTION(intState);
// Get the free-running count of 320us timer ticks
tmp = macMcuTimer2OverflowSetTime_M(count);
HAL_EXIT_CRITICAL_SECTION(intState);
ticks320us = tmp ;
previousMacTimerTick = tmp;
elapsedMSec = ((ticks320us * 320 ) / 1000 ); //uint 1ms
remUsTicks = ((ticks320us * 320) % 1000) * 25 ; //uint:40us
// Update OSAL Clock and Timers
if ( elapsedMSec )
{
timeMSec = elapsedMSec % 1000;
OSAL_timeSeconds = elapsedMSec / 1000;
osalTimerUpdate_M( elapsedMSec );
}
}
该函数由于是修改,所以不需要过多的操作直接残暴的修改即可,因为remUsTicks参数、previousMacTimerTick参数、timeMSec参数和OSAL_timeSeconds参数均为该文件中的静态参数。
{
// Update the system time
osal_systemClock = updateTime;
}直接修改osal_systemClock。
该函数首先通过调用macMcuOverFlowSetCount()函数修改定时器2的溢出计数器的值为0,然后通过设置prevoverflowCount参数、accumulatedOverflowCount参数、preAccumulatedOverflowCount参数和overflowCount参数来修改时间。
最后, 该方法还没有进行验证,后续 进行……
所以我打算在应用层通过函数对星状网络实现粗同步,其步骤如下:
在终端节点接受到来自协调器的数据包时,该数据包中包含协调器发出该数据包的时间信息timetmp。通过读取该参数并对我们的定时器2的溢出寄存器和累计时间进行修改来实现时间的粗同步(即忽略数据包的传输和传播时延、终端接收时间以及定时器2的计数器T2M0和T2M1的值修改)。
首先为了保证在终端中的我们使用的软件定时器事件不会产生大的时间差错,我们需要在函数中首先调用osalTimeUpdate()函数来更新定时器列表的timeout值,然后再使用我们自己定义的函数来修改accumulatedOverflowCount。
1.osalTimeUpdate_M( uint32 count )
位于OSAL_Clock.c中,其中void osalTimeUpdate_M( uint32 count )
{
halIntState_t intState;
uint32 tmp;
uint32 ticks320us;
uint32 elapsedMSec = 0;
remUsTicks = 0 ;
HAL_ENTER_CRITICAL_SECTION(intState);
// Get the free-running count of 320us timer ticks
tmp = macMcuTimer2OverflowSetTime_M(count);
HAL_EXIT_CRITICAL_SECTION(intState);
ticks320us = tmp ;
previousMacTimerTick = tmp;
elapsedMSec = ((ticks320us * 320 ) / 1000 ); //uint 1ms
remUsTicks = ((ticks320us * 320) % 1000) * 25 ; //uint:40us
// Update OSAL Clock and Timers
if ( elapsedMSec )
{
timeMSec = elapsedMSec % 1000;
OSAL_timeSeconds = elapsedMSec / 1000;
osalTimerUpdate_M( elapsedMSec );
}
}
该函数由于是修改,所以不需要过多的操作直接残暴的修改即可,因为remUsTicks参数、previousMacTimerTick参数、timeMSec参数和OSAL_timeSeconds参数均为该文件中的静态参数。
2. osalTimerUpdate_M( uint32 updateTime )
void osalTimerUpdate_M( uint32 updateTime ){
// Update the system time
osal_systemClock = updateTime;
}直接修改osal_systemClock。
3. macMcuTimer2OverflowSetTime_M(uint32 count)
void macMcuTimer2OverflowSetTime_M(uint32 count) { uint32 overflowCount = 0; //make the T2MOVFx to be 0 macMcuOverflowSetCount( 0x00000000 ); prevoverflowCount = 0; accumulatedOverflowCount = count; prevAccumulatedOverflowCount = accumulatedOverflowCount; overflowCount = accumulatedOverflowCount; return(overflowCount); }
该函数首先通过调用macMcuOverFlowSetCount()函数修改定时器2的溢出计数器的值为0,然后通过设置prevoverflowCount参数、accumulatedOverflowCount参数、preAccumulatedOverflowCount参数和overflowCount参数来修改时间。
最后, 该方法还没有进行验证,后续 进行……
相关文章推荐
- ZigBee_CC2530_0EH_关于协议栈下星状网络粗同步
- ZigBee_CC2530_0DH_关于协议栈时钟的一些记录
- ZigBee_CC2530_0DH_关于协议栈时钟的一些记录
- 学习zigbee,CC2530中的问题:关于P0,P1,P2端口的设置问题(SEL,DIR,INP)
- 关于网络时间同步
- Zigbee网络架构+ZigBee的体系结构+理解zigbee节点的实现的案例+“51单片机” 和 “zigbee” 、 “cc2530芯片” 之间的关系+芯片cc2530
- 关于同步(Sync),异步(Async),阻塞(Block),非阻塞等网络通信的一些解释
- 如何在协议栈中构建自己的 Zigbee 网络指示灯
- ZStack-CC2530-2.5.1a_0FH_关于协议栈下afIncomingMSGPacket_t::timestamp的猜测
- ZStack-CC2530-2.5.1a_0FH_关于协议栈下afIncomingMSGPacket_t::timestamp的猜测
- 备注一下两个关于网络协议栈的网址
- 关于网络IO中的同步、异步、阻塞、非阻塞
- ZigBee-cc2530 笔记---网络管理与拓扑
- ZigBee TI ZStack CC2530 4.1 三种网络设备类型
- JAVA基础知识之网络编程——-关于阻塞IO/非阻塞IO/同步IO/异步IO的一些参考文章
- ZigBee协议栈初始化网络启动流程
- ZigBee_CC2530_01H_关于无线通信的结构体介绍
- ZigBee_CC2530_01H_关于无线通信的结构体介绍
- 关于网络(同步、异步、阻塞、非阻塞,select/poll/epoll,rpc/msgqueue,tcpip常见面试题)
- CC2530zigbee技术-简介协议栈