MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。本文将介绍雷达测速芯片RSP1驱动程序的调用方法。
1、硬件原理图
1、硬件原理图
采用下图所示的RSP1
电路,可以直接调用
RSP1驱动程序进行程序开发。
成员变量
2、使用方法
a、加入
驱动程序
选中 RSP1文件夹,右键点击“Exclude from Build”即可。
选中 RSP1文件夹,右键点击“Exclude from Build”即可。
RSP1驱动程序由3个文件组成,如下图所示。其中
RSP1_config.hpp为
RSP1的配置文件,
RSP1.cpp为
RSP1类的源程序,
RSP1.hpp为
RSP1类的头文件。
b、使能外设
3、C RSP1类成员变量和成员函数的说明
b、使能外设
在config.hpp中使能外设
RSP1,其源程序如下:
#define EXTERNAL_MODULE_RSP1_MODE 1
c、驱动程序的配置 。
c、驱动程序的配置 。
查看原理图,可以看到如下的引脚对应关系。
通讯接口——UART0
BUSY
——P6.5
RESET
——P5.6
根据上述对应关系更改 RSP1_config.hpp配置文件,其更改后的源程序如下:
#define RSP1_UART 0x01
#define RSP1_BUSY_PORT PORT6
#define RSP1_BUSY_PIN PIN5
根据上述对应关系更改 RSP1_config.hpp配置文件,其更改后的源程序如下:
#define RSP1_UART 0x01
#define RSP1_BUSY_PORT PORT6
#define RSP1_BUSY_PIN PIN5
#define RSP1_RESET_PORTPORT6
#define RSP1_RESET_PIN PIN6
d、类的派生
d、类的派生
在硬件抽象层中声明类
CRadar,直接由
RSP1类派生即可,其源程序如下:
class CRadar:public CRSP1
class CRadar:public CRSP1
{
};
并在 HAL_include.hpp文件中添加如下包含语句:
#include "./Radar/Radar.hpp"
e、对象的声明
并在 HAL_include.hpp文件中添加如下包含语句:
#include "./Radar/Radar.hpp"
e、对象的声明
可以在CHAL类中,进行对象声明,
其源程序如下:
class CHAL
class CHAL
{
public:
//看门狗对象,不需更改
CWatchDog WatchDog;
//定义项目中用到的其它对象
CHCI HCI;
CRadar Radar;
};
f 、其它操作
f 、其它操作
使用
RSP1需启用1个异步串行口,UART0或者UART1均可(本文以
UART1为例
),并将其波特率设置为38400,其启动设置在
config.hpp中完成,源程序如下:
#define INTERNAL_PERIPHERAL_UART1_MODE 10
异步串行口启动后,在main.cpp的异步串行口中断函数中加入显示语句即可,源程序如下:
异步串行口启动后,在main.cpp的异步串行口中断函数中加入显示语句即可,源程序如下:
#pragma vector=USART1RX_VECTOR
__interrupt void Usart1RX_ISR(void)
{
//接收到的数据存于RXBUF1寄存器中
Target.HAL.Radar.Interrupt_Dispose(RXBUF1);
}
g、调用方法
程序启动后,在进入主循环之前,应进行如下程序操作:
if (Target.HAL.Radar.Reset() == False)//对RSP1进行复位操作,复位不成功,则闪灯提示
g、调用方法
程序启动后,在进入主循环之前,应进行如下程序操作:
if (Target.HAL.Radar.Reset() == False)//对RSP1进行复位操作,复位不成功,则闪灯提示
{
while(1)
{
Target.HAL.HCI.Led.Open();
Target.Delay.MilliSecond_250();
Target.HAL.HCI.Led.Shut();
Target.Delay.MilliSecond_250();
}
}
Target.HAL.Radar.ReadSamplingRate(); //读取采样频率
if (Target.HAL.Radar.b_UartFinish == False)
{
while(1)
{
Target.HAL.HCI.Led.Open();
Target.Delay.MilliSecond_250();
Target.HAL.HCI.Led.Shut();
Target.Delay.MilliSecond_250();
}
}
上述程序调用完毕后,便可进入主循环,执行希望的操作。
上述程序调用完毕后,便可进入主循环,执行希望的操作。
3、C RSP1类成员变量和成员函数的说明
uint8 u8_Direction[2]; 传感器的辨别方向
“00” 靠近时响应
“01” 远离时响应
“02” 靠近远离均响应
uint8 u8_HoldTime[2]; 保持时间
“00” 0.2秒
“01” 0.5秒
“02” 1秒
“03” 2秒
“04” 5秒
“05” 10秒
“06” 20秒
“07” 40秒
“08” 80秒
“09” 160秒
uint8 u8_Sensitivity[2]; 灵敏度,此数值指当前数值与阀值之间的距离,可以想象数值越大,表示与阀值之间的距离越长,灵敏度越差。所以“09”具有最高的灵敏度。
“00” 240
“01” 200
“02” 160
“03” 140
“04” 120
“05” 100
“06” 60
“07” 40
“08” 20
“09” 0
uint8 u8_Immunity[2]; 抗干扰性
“00”:1次均值
“01”:2次均值
“02”:3次均值
“03”:4次均值
“04”:5次均值
“05”:6次均值
“06”:7次均值
“07”:8次均值
“08”:9次均值
“09”:10次均值
uint8 u8_SensorType[2]; 传感器类型
“00”:双通道传感器
“01”:单通道传感器
uint8 u8_SamplingRate[2]; 采样率,采样率与检测速度对应表见注3
“01”:1280Hz
“02”:2560Hz
“03”:3840Hz
“04”:5120Hz
“05”:6400Hz
“06”:7680Hz
“07”:8960Hz
“08”:10240Hz
“09”:11246Hz
“0A”:22530Hz
uint8 u8_StartUpLearn[2]; 启动噪声平均时间, “01”-“40”:数值越高启动时间越长
uint8 u8_StartUpLearn[2]; 启动噪声平均时间, “01”-“40”:数值越高启动时间越长
uint8 u8_SensitivityPotentiometer[2]; 电位设置灵敏度
“00”:不使用电位器设置灵敏度
“01”: 使用电位器设置灵敏度
uint8 u8_ADCgain[2]; ADC增益
“00”:1倍增益
“01”:2倍增益
“00”:不使用电位器设置灵敏度
“01”: 使用电位器设置灵敏度
uint8 u8_ADCgain[2]; ADC增益
“00”:1倍增益
“01”:2倍增益
“02”:4倍增益
“03”:8倍增益
“03”:8倍增益
“04”:16倍增益
成员函数
Bool ReadDirection(void); 读取感应方向,数据存于u8_Direction成员变量中。
Bool WriteDirection(void); 写入感应方向, 数据存于u8_Direction成员变量中。
Bool ReadHoldTime(void); 读取保持时间, 数据存于 u8_HoldTime 成员变量中。
Bool WriteHoldTime(void); 写入保持时间, 数据存于 u8_HoldTime 成员变量中。
Bool ReadDirection(void); 读取感应方向,数据存于u8_Direction成员变量中。
Bool WriteDirection(void); 写入感应方向, 数据存于u8_Direction成员变量中。
Bool ReadHoldTime(void); 读取保持时间, 数据存于 u8_HoldTime 成员变量中。
Bool WriteHoldTime(void); 写入保持时间, 数据存于 u8_HoldTime 成员变量中。
Bool ReadSensitivity(void); 读取灵敏度,数据存于u8_Sensitivity成员变量中。
Bool WriteSensitivity(void); 读取灵敏度, 数据存于 u8_Sensitivity 成员变量中。
Bool ReadImmunity(void); 读取抗干扰性, 数据存于 u8_Immunity 成员变量中。
Bool WriteImmunity(void); 写入抗干扰性, 数据存于 u8_Immunity 成员变量中。
Bool ReadSensorType(void); 读取传感器类型, 数据存于 u8_SensorType 成员变量中。
Bool WriteSensitivity(void); 读取灵敏度, 数据存于 u8_Sensitivity 成员变量中。
Bool ReadImmunity(void); 读取抗干扰性, 数据存于 u8_Immunity 成员变量中。
Bool WriteImmunity(void); 写入抗干扰性, 数据存于 u8_Immunity 成员变量中。
Bool ReadSensorType(void); 读取传感器类型, 数据存于 u8_SensorType 成员变量中。
Bool WriteSensorType(void);
写入传感器类型,
数据存于
u8_SensorType
成员变量中。
Bool ReadSamplingRate(void); 读取采样率, 数据存于 u8_SamplingRate 成员变量中。
Bool WriteSamplingRate(void); 写入采样率, 数据存于 u8_SamplingRate 成员变量中。
Bool ReadStartUpLearn(void); 读取 启动噪声平均时间 , 数据存于 u8_StartUpLearn 成员变量中。
Bool WriteStartUpLearn(void); 写入 启动噪声平均时间 , 数据存于 u8_StartUpLearn 成员变量中。
Bool ReadSensitivityPotentiometer(void); 读取 电位设置灵敏度 , 数据存于 u8_SensitivityPotentiometer 成员变量中。
Bool Write SensitivityPotentiometer(void); 写入 电位设置灵敏度 , 数据存于 u8_SensitivityPotentiometer 成员变量中。
Bool ReadADCgain(void); 读取 ADC增益 , 数据存于 u8_ADCgain 成员变量中。
Bool WriteADCgain(void); 写入 ADC增益 , 数据存于 u8_ADCgain 成员变量中。
Bool ReadSamplingRate(void); 读取采样率, 数据存于 u8_SamplingRate 成员变量中。
Bool WriteSamplingRate(void); 写入采样率, 数据存于 u8_SamplingRate 成员变量中。
Bool ReadStartUpLearn(void); 读取 启动噪声平均时间 , 数据存于 u8_StartUpLearn 成员变量中。
Bool WriteStartUpLearn(void); 写入 启动噪声平均时间 , 数据存于 u8_StartUpLearn 成员变量中。
Bool ReadSensitivityPotentiometer(void); 读取 电位设置灵敏度 , 数据存于 u8_SensitivityPotentiometer 成员变量中。
Bool Write SensitivityPotentiometer(void); 写入 电位设置灵敏度 , 数据存于 u8_SensitivityPotentiometer 成员变量中。
Bool ReadADCgain(void); 读取 ADC增益 , 数据存于 u8_ADCgain 成员变量中。
Bool WriteADCgain(void); 写入 ADC增益 , 数据存于 u8_ADCgain 成员变量中。
注1:本文中示例代码用绿色标注。
注2:本文中 与使用密切相关的成员变量与成员函数用红色标注
注3 : 采样率与检测速度对应表