MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设。本文将介绍雷达測速芯片RSP1驱动程序的调用方法。



    1、硬件原理图 
    採用下图所看到的的RSP1电路,能够直接调用RSP1驱动程序进行程序开发。

/V111a7Bl0251Ar/6vSwNpYebSLQCWP2ZArCb9KMjyqTzeM4N6yT9t7Fxmk!/o/dA4AAAAAAAAA&ek=1&kp=1&pt=0&bo=swBJALMASQADACU!&su=196951169&sce=0-12-12&rf=2-9" style="margin:0px; padding:0px; border-width:0px; border-style:none; vertical-align:top; width:179px; height:73px"> 

    2、用法
    a、增加驱动程序

    选中RSP1目录。右键点击“Exclude from Build”就可以。 
    RSP1驱动程序由3个文件组成。例如以下图所看到的。当中RSP1_config.hpp为RSP1的配置文件。RSP1.cpp为RSP1类的源程序,RSP1.hpp为RSP1类的头文件。

 

    

    b、使能外设
    在config.hpp中使能外设RSP1。其源程序例如以下:
        #define
EXTERNAL_MODULE_RSP1_MODE 1



    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
        #define RSP1_RESET_PORTPORT6
        #define RSP1_RESET_PIN PIN6



    d、类的派生
    在硬件抽象层中声明类CRadar,直接由RSP1类派生就可以。其源程序例如以下:

        class CRadar:public CRSP1
        {

        }; 

    并在HAL_include.hpp文件里加入例如以下包括语句:

        #include "./Radar/Radar.hpp" 



    e、对象的声明
    能够在CHAL类中。进行对象声明,其源程序例如以下:

        class CHAL
        {
        public:
            //看门狗对象,不需更改
            CWatchDog WatchDog;
            //定义项目中用到的其他对象
            CHCI HCI;
            CRadar Radar;
        }; 



    f、其他操作
    使用RSP1需启用1个异步串行口,UART0或者UART1均可(本文以UART1为例)。并将其波特率设置为38400,其启动设置在config.hpp中完毕。源程序例如以下:
        #define
INTERNAL_PERIPHERAL_UART1_MODE 10

    异步串行口启动后。在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进行复位操作,复位不成功。则闪灯提示
        {
            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、CRSP1类成员变量和成员函数的说明

成员变量

        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_SensitivityPotentiometer[2];    电位设置灵敏度

            “00”:不使用电位器设置灵敏度

            “01”:使用电位器设置灵敏度 

        uint8 u8_ADCgain[2];        
ADC增益

            “00”:1倍增益

            “01”:2倍增益
            “02”:4倍增益

            “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 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 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 WriteSensitivityPotentiometer(void);写入电位设置灵敏度。数据存于u8_SensitivityPotentiometer成员变量中。  

        Bool ReadADCgain(void);      读取ADC增益。数据存于u8_ADCgain成员变量中。 

        Bool WriteADCgain(void);   
 写入ADC增益,数据存于u8_ADCgain成员变量中。



    注1:本文中演示样例代码用绿色标注。

    注2:本文中与使用密切相关的成员变量与成员函数用红色标注

    注3: 採样率与检測速度相应表





原创性文章。转载请注明出处 http://user.qzone.qq.com/2756567163。 

MSP430WARE++的使用2:RSP1 driver的调用方法的更多相关文章

  1. MSP430WARE++的使用3:modbus模块的调用方法

    MSP430WARE++的使用3:modbus模块的调用方法     MSP430WARE是一套基于C++语言的开源的MSP430层次化软件架构,支持多种外设. 本文将介绍modbus模块驱动程序的调 ...

  2. [No000085]C#反射Demo,通过类名(String)创建类实例,通过方法名(String)调用方法

    using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using Sy ...

  3. ThinkPHP跨控制器调用方法

    跨控制器调用方法 1. 先造对象,再调用里面的方法 $sc=new \Home\Controller\IndexController();  用绝对路径找echo $sc->ShuChu(); ...

  4. C# 反射之调用方法谈

    反射的定义 反射提供了描述程序集.模块和类型的对象(Type 类型). 可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访问其字段和属性. 如果代码中使用了特性 ...

  5. 利用反射调用方法时,处理ref,out参数需要注意的问题(转)

    转自:http://www.68idc.cn/help/buildlang/ask/20150318283817.html 项目中如下的泛型方法,因为要在运行时,动态指定类型参数,所以要利用反射来实现 ...

  6. Struts2 Action下面的Method调用方法

    1. 在struts.xml中加入<constant name="struts.enable.DynamicMethodInvocation" value="tru ...

  7. 完整的分页存储过程以及c#调用方法

    高效分页存储过程 USE [db] GO /****** 对象: StoredProcedure [dbo].[p_Page2005] 脚本日期: // :: ******/ SET ANSI_NUL ...

  8. MySql 存储过程及调用方法

    存储过程实例: DELIMITER $$drop procedure if exists ff $$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PRO ...

  9. jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

    jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法   在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...

随机推荐

  1. 实例化flask的参数及对app的配置

    Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...

  2. 【百度之星】-IP聚合

    问题描述: Problem Description 当今世界,网络已经无处不在了,小度熊由于犯了错误,当上了度度公司的网络管理员,他手上有大量的 IP列表,小度熊想知道在某个固定的子网掩码下,有多少个 ...

  3. Java常用类库(三) : HashSet和LinkedList特点简析

    今天内容: l  浅撩HashSet集合元素不可重复的原理 l  使用LinkedList模拟栈和队列 1.浅撩HashSet集合元素不可重复的原理 我们知道HashSet是添加不了相同的元素的,其原 ...

  4. jQuery文档就绪

    很多jQuery代码都有如下片段: $(document).ready(function(){ //代码 }) 作用就是等文档结构加载完成后再去执行function中的代码,功能类似于window.o ...

  5. android fragment轻松监听返回键/Fragment中的popupwindow响应返回键隐藏

    现在的开发我们基本上都是一个主activity中放多个fragment,点击返回按钮的时候,直接退出主activity,但是我们在fragment中经常会弹出例如popupWindow这样的布局,用户 ...

  6. CentOS配置网卡以及克隆

    上一篇的虚拟机安装完成后是可以上网的,但是ip地址是动态的,因为后期的需要,我们要配置下网卡,改成静态的IP地址 1.打开终端,输入 ifconfig 查看虚拟机中的网卡,发现时ens33而不是平常见 ...

  7. 02--Tomcat总体结构分析一

    注:此文章大部分参考大神文档,并且结合自身理解,补充了其他相关知识,谢绝转载.      大神原文地址链接:http://www.ibm.com/developerworks/cn/java/j-lo ...

  8. spring+spring MVC+mybatis 框架搭建

    1.新建一个javaWeb工程Test,创建时记得勾选web.xml文件. 2.导入需要的jar包,Mybatis所有的jar,spring所有的jar,mysql驱动包. 这里mybatis和spr ...

  9. HDU_Reward_拓扑排序

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  10. Python之操作Excel、异常处理、网络编程

    知识补充: 1.falsk模块中一些方法总结 import flask from flask import request,jsonify server = flask.Flask(__name__) ...