关 闭

新闻中心

EEPW首页 > 工控自动化 > 设计应用 > STM32和CC2520的TinyOS移植与驱动分析

STM32和CC2520的TinyOS移植与驱动分析

作者:时间:2012-12-06来源:网络收藏

3. 1.2 修改I/O、LED灯、Timer、USART、SPI组件
(1)通用I/O接口
HIL层组件通过3个接口描述MCU可以控制的通用输入输出引脚。General I/O接口描述输入输出引脚被清零或置位状态、设置为输入或输出模式。GpioInterrupt接口描述单个引脚触发的中断,可以对每一个引脚分别配置为上升沿触发或者下降沿触发中断。GpioCapture接口描述捕获单个引脚发生的事件,可以对每一个引脚分别配置为上升沿触发或者下降沿触发。
(2)LED灯
最多可独立支持平台上3个LED灯。通过PlatformLedsC组件直接访问3个LED灯,LedC和LedP组件再通过装配PlatformLedsC组件,向上层组件提供Led接口,相当于General I/O接口的使用。在PlatformLedsC组件中,可以对每种开发板指定相应的LED引脚。
(3)Timer
MCU时钟通常有3种常见的功能:控制、时钟/计数器、触发。将与MCU时钟相关的文件放到chips//timer。时钟的通用功能通过一系列的接口定义实现:
d.JPG
(4)USART
节点可以通过USART与PC通信,将与USART相关文件放于chips//uart。本文只通过HplUartNoDmaP组件的STM32Uart1C配件实现了简单的USART功能。串口的初始化包括:波特率、字长、奇偶校验位、流控制、打开串口时钟和配置串口发送接收引脚等。
(5)SPI
由于通过SPI接口和MCU通信,所以必须实现SPI接口。SPI的初始化包括:时钟信号的相位和极性、NSS模式、数据帧格式、主从模式等。
3.2
在tos/chips/cc2520中,定义与芯片相关的组件,这里面的组件直接对芯片进行操作。在tos/platforms/cc2520文件夹中定义CC2520和MCU交互的接口。CC2520通过SPI接口与STM32完成设置和收发数据两方面的任务。
CC2520工作流程如下:应用程序中使用SplitControl接口,该接口最终连接到CCDriverLayerP上,在SoftwareInit.init中对CC2520使用的和MCU相连的引脚进行初始配置。
首先,复位CC2520,并且关闭电压调整器,根据Datasheet,延时1100 μs,延时通过接口BusyWaitT32khz,uint16_t>。延时完成后,开启电压调整器,并延时200μs后使能CC2520。完成后,申请SPI资源,该资源接口连接在CC2520DriverLayerP上,资源申请允许后,在CC25 20DriverLayerP中捕获到SpiResource.granted事件,然后开始通过SPI接口初始化CC2520,调用startOscillator。之后,调用initRadio对CC2520的寄存器进行相应配置。
而在接收模式时,CC2520收到物理帧的SFD字段后,会在SFD引脚输出高电平,直到接收完该帧。如果启用了地址识别,在地址识别后,SFD引脚立即转为输出低电平。FIFO和FIFOP引脚标识FIFO缓存区的状态。如果接收FIFO缓存区有数据,FIFO引脚输出高电平;如果接收FIFO缓冲区为空,FIFO引脚输出低电平。无线模块组织架构图如图2所示。

本文引用地址:http://www.eepw.com.cn/article/159652.htm

e.JPG


3.3 修改平台文件
在tos/platforms下放置平台相关文件,将物理相关的组件连接起来组成具体平台。创建一个平台需要完成5个部分:
①“.platform”文件告知编译系统文件的位置,由一系列的包含路径和NesC的参数组成。ncc将“.platform”文件当作perl脚本读出,并将参数传递到NesC预编译器。
②平台导入程序PlatformP/PlatformC,通过调用两个初始化接口platformC.Init和MainC.softwarelnit来激活MCU、传感器和射频等硬件模块及相关软件。platformC.Init通常完成时钟校准和引脚设置,保证硬件在可操作状态。
③与硬件具体功能相关的头文件“hardware.h”和将芯片与平台结合的具体代码。“hardware.h”包含了其他硬件子系统的头文件,并被主文件“MainC.nc”所包含。
④修改链接脚本文件,仿照其他平台文件在tos/platforms文件夹下建立tos.x文件,设置rom和ram的起始地址和大小。设置中断向量表、代码段、数据段、非初始化数据段和其他段的放置位置。
⑤定义中断向量表,在tos/platforms/STM32-p103/vectors文件夹下新建STM32-vector.c文件,用于放置中断向量表,按照STM32提供的中断配置中断向量表,并初始化默认中断处理函数,实际应用中这些中断处理函数可以在其他文件中重定义。比如时钟中断处理函数在McuSleepC.nc中重定义。



评论


相关推荐

技术专区

关闭