深圳芯片解密研究所系国内IC解密行业的鼻祖
24小时咨询电话:189-2383-0090

当前位置:首页>芯片解密须知 >> 单芯片MC13213的ZigBee平台协议实现(下)

单芯片MC13213的ZigBee平台协议实现(下)

  硬件驱动程序介于底层硬件和ZigBee协议栈之间,可以使得运行于硬件之上的ZigBee协议栈更易于维护和移植。其中芯片初始化程序对MCU的一些硬件模块进行正确的配置,以保证MCU可以正常工作。这里所做的主要配置包括:关闭看门狗,设置内部时钟模块的校准(trim)值,配置MCU的时钟模块等。
  初始化完成后会涉及到SPI循环事务的实现,下面以Packet模式下发送和接收3 B数据的完整过程来描述对Modem RX/TX RAM的SPI循环读写操作。其中,RX/TX RAM的长度为128 B。
  读/写RAM时的SPI通信是最高有效位优先(MSB-first)的,而在无线发送/接收过程中是最低有效位优先LSB-first(Least Significant Bit first)的,但在编写SPI循环读写操作时并不需要考虑上述两种顺序,也并不会导致接收方在接收发送方的数据时产生比特位顺序的改变。
  Modem有多种运行模式,主要可分成两类:活动模式和低功耗模式。其中活动模式包括Idle模式、Receive(RX)模式、Transmit(TX)模式和CCA/ED模式;低功耗模式包括Off模式、Hibernate模式、Doze模式。
  Idle模式是Modem退出任何其他模式后的默认模式,也是进入任何其他模式的初始模式;RX、TX模式分别为Modem接收、发送数据时所处的工作模式;CCA/ED模式为空闲信道评估/能量检测时所处的工作模式,用来评估信道是否空闲或测量信道的当前能量值。
  当Modem完成MCU指定的某个功能(如发送完成、接收完成、CCA/ED完成等),就会产生IRQ中断,然后MCU会读取Modem的IRQ状态寄存器,针对不同的IRQ中断类型分别进行处理。
  物理层管理实体(PLME)维护了物理层正常工作所必须的一些属性参数,包括物理层支持的信道列表、当前用于发送和接收的信道、物理层的发射功率以及CCA模式4个属性。每个属性都有一个唯一的属性标识符,并且某些属性还有一些特定的取值范围。属性的读和写分别由属性设置和读取函数来实现,由于物理层的属性较少,直接通过switch/case语句实现即可。
  按照前面分析的ZigBee物理层编程结构编写测试程序,可用于对物理层的构件功能进行测试。测试可先进行SPI单次读写事务测试,然后再进行数据包收发测试。
  在对Modem的内部寄存器初始化之前,可利用SPI单次读事务获取Modem寄存器的内容,并通过串口输出显示与Modem寄存器的复位值对比是否一致。接着利用SPI单次写事务,对Modem进行初始化,初始化后,再把修改后的Modem寄存器的内容通过串口输出显示,与修改值比较,即可得出SPI写事务是否正确。
  物理层数据包的收发测试需要一个发送节点和一个接收节点相互配合。对于能否正确收发需要测试两种情况,发送节点分别发送奇数个和偶数个字节的数据,看接收节点能否正确收到。这部分的测试是借助于串口调试工具来完成的,接收节点把收到的数据发往PC机串口显示。
  本文研究了ZigBee协议物理层的SPI事务协议、Modem的工作模式等关键技术和编程方法,实现了基于单芯片ZigBee平台的构件化的底层硬件驱动程序和物理层数据包收发程序。测试表明,此硬件平台稳定可靠、实现容易,不但方便了其他研究人员学习和实践ZigBee技术,降低了研究ZigBee技术的门槛,还由于采用了单芯片设计和构件化设计方法,具有较高的可移植性和可重用性。