第八届光电组兰州理工大学机械工程一队技术报告_第1页
第八届光电组兰州理工大学机械工程一队技术报告_第2页
第八届光电组兰州理工大学机械工程一队技术报告_第3页
第八届光电组兰州理工大学机械工程一队技术报告_第4页
第八届光电组兰州理工大学机械工程一队技术报告_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八届“飞思卡尔”杯全国大学生智能汽车竞赛技 术 报 告学 校:兰州理工大学队伍名称:机械工程一队参赛队员:胡世林刘维平唐美带队教师:杨萍韩致信关于技术报告和研究论文使用授权的说明本人完全了解第八届“飞思卡尔”杯全国大学生智能汽车竞赛关保留、使用技术报告和研究论文的规定,即:参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。参赛队员签名:带队教师签名:日期:摘要本论文中设计的智能车系统采用飞思卡尔公司的MC9S12XS128作为控制核心,以BTS7970为电机

2、驱动模块,通过编码器获得电机速度信息。使用TSL1401线性CCD获取赛道信息;在智能车控制方面,基于位置式及增量式的PID控制算法在高速行驶赛车的路径优化和速度控制上有着不错的效果。为了提高车的速度和稳定性,我们使用NRF2401无线通讯模块、等多种调试工具。结果表明,本系统可靠有效。关键词:MC9S12XS128,BTS7970, PID,NRF2401AbstractWe design the smart car system based on the control of MC9S12XS128 in this paper. We choose BTS7960 to be the mo

3、tor drive, and encoder to feedback the speed of the motor. We use TSL1401 linear sensor to get the information of the track. During the control of the smart car, the positional PID and Increasing PID perform good on path optimization and speed control in high speeding pattern. In order to improve th

4、e speed and the stability of the smart car, we use kinds of methods, such as wireless module . It turned out that the system is reliable and effective. Keyword:MC9S12XS128,BTS7970,PID, NRF2401目录摘要Abstract第一章 引言1第二章系统总体设计22.1 系统概述22.1.1 任务分解22.1.2直立控制分析32.1.3速度控制分析42.1.4 转弯控制分析42.2 车模倾角检测42.3整车布局4第三章

5、 系统机械结构设计与实现63.1 车模63.2车模车身简化及固定63.3陀螺仪及加速度计固定结构设计83.4 路径传感器固定结构设计93.5编码器的安装设计93.6红外模块的安装9第四章 硬件系统的设计与实现104.1 硬件设计总体方案104.2 系统电路的设计与实现104.2.1 电源管理电路114.2.2 电机驱动电路114.2.3 红外模块电路12第五章 软件系统的设计与实现135.1 主程序135.1.1程序运行流程135.1.2PWM输出145.1.3直立控制195.1.4 速度控制195.1.5转弯控制195.2 卡尔曼滤波19第六章 开放工具与系统调试216.1 开发工具216.

6、2 无线通信模块21第七章 车辆参数23致谢I参考文献II附录程序 第一章 引言全国大学生智能汽车比赛是经全国高等教育司研究,委托高等学校自动化专业教学指导分委会主办的,旨在培养创新精神、协作精神,提高工程实践能力的大学生科技创新活动。本次大赛中,使用竞赛秘书处统一指定的D车竞赛车模套件,采用飞思卡尔半导体公司的16位微控制器MC9S12XS128作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动以及控制算法软件开发等。制作一个能够自主识别路线的两轮自平衡智能车,让车模以两个后轮驱动在专门设计的跑道上自动识别道路行驶。本技术报告主要对小车的整体设计思路,硬件与软件

7、的设计及实现,机械结构的安装及优化以及赛车的调试的过程作简要的说明。第二章 系统总体设计2.1系统概述系统概述图如图2.1所示MC9S12XS128陀螺仪、加速度计直立控制TSL1401线性CCD路径提取BTS7960电机驱动模块驱动电机速度编码器速度反馈 图2.1系统概述2.1.1任务分解两轮赛车通过检测自身倾斜角度以及倾斜角速度的大小,通过单片机处理采集得到的角度、角速度信号,实现对赛车自身平衡以及前进的控制,再以TSL1401线性CCD采集到的128个像素点的值为基础,通过单片机处理采集到得赛道信息,实现对赛车的转向控制,进而识别赛道达到路径讯迹的目的。车模的运行可以分为三个过程:直立、

8、前进、转弯。但是暂时找不到其他方法可以不依赖电机而可以控制任意一个过程,所以只能由控制车模两个电机旋转方向及速度实现对车模的控制,因此将车模运动控制任务分解成以下三个基本任务: (1) 控制车模直立:通过控制两个电机正反向运动保持车模直立状态; (2) 控制车模速度:通过控制两个电机转速速度实现车模行进控制;(3) 控制车模转向:通过控制两个电机之间的转动差速实现车模转向控制。2.1.2直立控制分析如图2.1.2所示,车身可看作是一个倒立摆,要想通过控制使得倒立摆能够像单摆一样,稳定在垂直位置,只有两个办法:一个是改变重力的方向;另一个是增加额外的受力,使得恢复力与位移 方向相反才行。但显然能

9、够做的只有第二种方式。控制倒立摆底部车轮,使得它作加速运动。这样站在小车上(非惯性系)看倒立摆,它就会受到额外的力(惯性力) ,该力与车轮的加速度方向相反,大小成正比。这样倒立摆所受到的回复力为(2-1) 图2.1.2式中,假设控制车轮加速度与偏角成正比,比例为k1。显然,如果k1g ,(是重力加速度)那么回复力的方向便于位移方向相反了。此外,为了使得倒立摆能够尽快地在垂直位置稳定下来,还需要增加阻尼力,与偏角的速度成正比,方向相反。因此式(2-1)可变为(2-2)所以车模车轮加速度的控制算法为所以我们需要测量小车的角度和角速度即可控制直立。2.1.3速度控制分析车模电机的转速与施加在其上的电

10、压成正比。通过传统的 PID 反馈控制,便可以精确控制电机的运行速度,从而控制车模的运行速度。不过前提是保持车身平衡。2.1.4转弯控制分析利用TSL1401线性CCD检测赛道信息计算赛道偏差并计算差速所需电压分别与车模速度控制信号进行加和减,左右轮差动控制电压,使得车模左右轮运行角速度不一致进而控制车模方向。2.2 车模倾角检测通过加速度计检测回来的数据与重力加速度比较,可以得到车身倾角,再对此信号进行微分便可以获得倾角加速度。但在实际车模运行过程中,由于车模本身的运动所产生的加速度会产生很大的干扰信号叠加在上述测量信号上,使得输出信号无法准确反映车模的倾角,尽管平滑滤波可以把波动滤掉,但是

11、也会无法准确反映车模倾角变化,所以需要在加上一个陀螺仪检测角速度。2.3整车布局小车整体布局如图2.3所示1) 机械结构方面: 电路板紧贴车身,电池放在车身后轮子稍上,降低重心; 采用高强度、低质量的碳素杆作为线性CCD支架; 简化支架,单杆伸出,采用三角形结构固定该杆使其稳固可靠; 陀螺仪和加速度计模块装在车身中间,保持水平,使得检测回来的数据更加精确,并且使得左右转弯差异变小; 剪短不必要的连线,减轻车重。2)在硬件方面:力求电路构成简单,稳定性高;传感器的安装可靠,外界对系统电路的干扰小。硬件主要设计思路如下:主电路板外形贴合车身的边沿,安装时尽量贴近车底盘,降低重心;电路板布线尽量采用

12、单回路布线,并且将数字地与模拟地分离,并且在容易引入干扰的器件旁加入旁路电容;将容易产生静电干扰的部分,接入电路板的模拟地中。3)在软件方面:力求控制算法适合D车的特性,精确完成转向控制和速度,并具有较高的稳定性。采用S12作为控制核心,通过线性CCD采集赛道信息,从而对电机进行控制;通过编码器反馈速度信息,实现对速度的控制。 图2.3 整车布局第三章 系统机械结构设计与实现3.1车模图3.1 D车车模结构电机:RN2603.2 车模车身简化及固定我们采用赛制规定的D车车模进行改装,原来的车模后轮支架与底盘之间采用了活动连接方式,但为了保证车模直立的稳定性,需要这个车身变成刚体结构。所以我们用

13、热熔胶在后轮支架与底盘之间的缝隙处进行粘接。但在跑的时候车身不稳,故改用废电路板将其固死,为防螺丝松掉,又用AB胶将缝隙粘死。3.3 陀螺仪及加速度计固定结构设计陀螺仪及加速度计对于直立控制至关重要,所以他们的安装位置也是很重要的。经实际测试,该模块安装在高处,容易受到微小抖动的干扰,影响到车身倾角的检测,而底部需要放电池及电路板等重物,因此我们选择了一个比较正中的位置进行安装。如图3.3.1所示。图3.3.1 陀螺仪加速度计模块安装 3.4 路径传感器固定结构设计为了车身的稳定,车的重心越靠近车轮越好,所以我们采用了轻质量但高强度的碳素杆做成支架如图3.4所示。 图3.4线性CCD支架3.5

14、 编码器的安装设计飞思卡尔D车车模具有双电机,为了达到更精准的控速,我们选择在两个电机分别安装编码器用来测速。我们使用了360线的欧姆龙编码器,编码器可方便的安装在车轮上部,与马达齿轮相互咬合,来达到精确的测速。编码器的安装如图3.5所示。 图3.5 编码器安装3.6 红外模块的安装由于第八届飞思卡尔智能车比赛光电组要求小车到达终点后自动停车,所以需要检测起跑线。经过试验,采用CCD检测容易误判,故采用TCRT5000红外对管作为起跑线检测传感器,为了降低重心,我们将该模块装与电池与车体之间的缝隙中。如图3.6所示。图3.6 红外模块安装第四章 硬件系统的设计与实现4.1 硬件设计总体方案智能

15、车的硬件系统,主要包括控制电路,电源管理电路,电机驱动电路以及外围传感器构成,实现了信息采集与控制实现等功能。系统采用的主芯片是红树伟业制作的MC9S12XS128P80管脚的核心板。 4.2 系统电路的设计与实现4.2.1 电源管理电路小车系统中有多个检测模块和驱动模块,需要不同的电源电压,所以电源管理部分要分部完成对各个模块的供电。系统存在着功率电路与数字电路,为了更好的隔离干扰,使系统的稳定性更高,所以在电源设计方面要考虑分隔开数字地与模拟地。当小车驱动电机在运动过程中,会在一定程度上拉低电池的电压。为了提高系统的性能,我们采用低压降的稳压芯片LM2940。LM2940具有高转换效率,低

16、静态电流等优点,适合本系统工作特点。本系统中,采用三路LM2940为分别为单片机,速度编码器,线性CCD以及陀螺仪加速度计模块供电,一路LM1117为NRF2401无线通信模块供电。5V供电如图4.2.2.1所示,3.3V供电如图4.2.2.2所示。图4.2.2.1 5V供电图4.2.2.2 3.3V供电4.2.2 电机驱动电路今年D车车模我们采用了4片BTS7970构成全桥驱动,全桥驱动可以输出两路PWM,并且允许通过较大电流,驱动能力强,稳定性好,如图4.2.3.1所示。图4.2.3.1 电机驱动驱动模块实物图如图4.2.3.2所示。图4.2.3.2电机驱动模块4.2.3 红外模块电路红外

17、模块采用三个TCRT5000,LM358构成比较电路,输出高低电平用于起跑线检测,其原理图如图4.2.4所示。图4.2.4 红外模块电第五章 软件系统的设计与实现5.1主程序5.1.1程序流程5.1.2 PWM输出包括三个部分:直立输出、转向输出和速度输出。 /* 函数名称:AngleControl函数功能:入口参数:出口参数:无 备 注: */int16_t AngleControl(void) int16_t fValue; int8_t ANGLE_CONTROL_P ; int8_t ANGLE_CONTROL_D ; / if(g_fCarAngle0) ANGLE_CONTROL_

18、P = -7; ANGLE_CONTROL_D = -2; /* else ANGLE_CONTROL_P = 6 ; ANGLE_CONTROL_D = 0; */ if(g_nAngleControlFlag = 0) g_fAngleControlOut = 0;return g_fAngleControlOut ;/-fValue = (CAR_ANGLE_SET - g_fCarAngle) * ANGLE_CONTROL_P + /角速度控制系数 (CAR_ANGLE_SPEED_SET - g_fGyroscopeAngleSpeed) * ANGLE_CONTROL_D; /角

19、度控制系数 /*/if(fValue ANGLE_CONTROL_OUT_MAX) fValue = ANGLE_CONTROL_OUT_MAX;else if(fValue 8) ; / uart_putchar (UART0, g_fCarAngle) ; return g_fAngleControlOut ; /* 函数名称:TurnPWM函数功能:入口参数:TurnPosition 计算黑线位置 TurnMidPosition 黑线中点值 *AngerCout 角度传感器AD采集次数 *AngerValue 采集的AD值出口参数:无 备 注: */uint16_t TurnPWM(ui

20、nt8_t TurnPosition,uint8_t TurnMidPosition,uint8_t *AngerCout ,uint16_t *AngerValue) int8_t TurnD = 0,TurnP = 1; int8_t AgerAv; uint16_t TurnPWMM ; AgerAv = *AngerValue / *AngerCout ; *AngerCout = 0 ; *AngerValue = 0 ; if(g_nDirectionControlFlag = 0) TurnPWMM = 0; return TurnPWMM ; TurnPWMM = TurnP*

21、(TurnPosition - TurnMidPosition) + TurnD*(AgerAv - GZROS_OFFSET ) ; return TurnPWMM ; /* 函数名称:MotorSpeedOut函数功能:入口参数:TurnPosition 计算黑线位置 TurnMidPosition 黑线中点值 *AngerCout 角度传感器AD采集次数 *AngerValue 采集的AD值出口参数:无 备 注: */int16_t MotorSpeedOut(int16_t anglePWM ,int16_t speedPWM ,int16_t turnPWM) int16_t Lef

22、tMotorOut ,RinghtMotorOut ; int16_t speedAvPWM ,turnAvPWM ; int8_t leftMotorPWM ,RingtMotorPWM ; speedAvPWM = speedPWM ; turnAvPWM = turnPWM/TURNTIMCOUNT ; LeftMotorOut = anglePWM + speedAvPWM + turnAvPWM ; RinghtMotorOut = anglePWM + speedAvPWM - turnAvPWM ; if(LeftMotorOut MOTOR_OUT_MAX) LeftMotor

23、Out = MOTOR_OUT_MAX ; else if(LeftMotorOut MOTOR_OUT_MAX) RinghtMotorOut = MOTOR_OUT_MAX ; else if(RinghtMotorOut = 0) leftMotorPWM = LeftMotorOut *100/1280 ; leftMotorPWM += 0 ; if(leftMotorPWM 250) leftMotorPWM = 250 ; PWMDTY4 = leftMotorPWM ; PWMDTY5 = 0 ;/ FTM_PWM_Duty(FTM0 , CH0,leftMotorPWM);/

24、 FTM_PWM_Duty(FTM0 , CH1,0); else leftMotorPWM = LeftMotorOut *(-100)/1280; leftMotorPWM += 0; if(leftMotorPWM 250) leftMotorPWM = 250 ; PWMDTY4 = 0; PWMDTY5 = leftMotorPWM ; if(RinghtMotorOut = 0) RingtMotorPWM = RinghtMotorOut *100/1280; RingtMotorPWM += 0; if(RingtMotorPWM 250) RingtMotorPWM = 25

25、0 ; PWMDTY6 = RingtMotorPWM; PWMDTY7 = 0 ; else RingtMotorPWM = RinghtMotorOut *(-100)/1280; RingtMotorPWM += 0; if(RingtMotorPWM 250) RingtMotorPWM = 250 ; PWMDTY6 = 0; PWMDTY7 = RingtMotorPWM ; return (LeftMotorOut +RinghtMotorOut)/2);5.1.3 直立控制因为暂时找不到别的方法来平衡小车,所以只能靠两个电机来维持小车的平衡。根据陀螺仪以及加速度计返回来的数据进

26、行积分,得到车身的角度和角速度,并根据积分数据,利用PD控制,5ms控制一下直立,使得车身得以保持平衡,作为速度控制的基础。5.1.4 速度控制小车的平衡是优先考虑的要素,所以为了不影响小车的平衡,我们不能频繁的改变速度,因此我们100ms才控制一次速度,并且使用增量式PID控制,即将需要的PWM分成20份,每5毫秒加一次,直至加完进行下一次速度控制。5.1.5 转弯控制车模方向控制是通过TSL1401线性CCD采集的像素点的值判断黑线位置,然后计算与中心位置的偏差,使用位置式PID控制。5.2卡尔曼滤波卡尔曼滤波是一种高效率的递归滤波器,它能够从一系列的不完全及包含噪声的测量中,估计动态系统

27、的状态。加速度计采样回来的数据会因为微小震动而产生毛刺,从而产生误差,因此用卡尔曼滤波结合陀螺仪输出的角加速度,把产生的误差降到最小。程序如下。void Kalman_Filter(double angle_m,double gyro_m)/gyro_m:gyro_measureangle0+=(gyro_m-q_bias) * dt;/先验估计Pdot0=Q_angle - P01 - P10;/ Pk- 先验估计误差协方差的微分Pdot1=- P11;Pdot2=- P11;Pdot3=Q_gyro;P00 += Pdot0 * dt;/ Pk- 先验估计误差协方差微分的积分 = 先验估计

28、误差协方差P01 += Pdot1 * dt;P10 += Pdot2 * dt;P11 += Pdot3 * dt;angle_err = angle_m - angle0;/zk-先验估计PCt_0 = C_0 * P00;PCt_1 = C_0 * P10;E = R_angle + C_0 * PCt_0;K_0 = PCt_0 / E;/KkK_1 = PCt_1 / E;t_0 = PCt_0;t_1 = C_0 * P01;P00 -= K_0 * t_0;/后验估计误差协方差P01 -= K_0 * t_1;P10 -= K_1 * t_0;P11 -= K_1 * t_1;a

29、ngle0+= K_0 * angle_err;/后验估计q_bias+= K_1 * angle_err;/后验估计angle_dot0 = gyro_m-q_bias;/输出值(后验估计)的微分 = 角速度第六章 开发工具与系统调试6.1 开发工具使用了CodeWarrior Development Studio for Microcontroller v10.1集成开发环境。图6.1.1是软件的安装界面。图6.1.1 安装界面6.2无线通信模块在调试过程中,为了能够实时获取智能车在运动过程中的一些参数,以及避免智能车在尝试各种算法时冲出赛道而发生意外,我们使用了NRF2401无线通信模块

30、传输数据。为此,我们设计了智能车监控软件和遥控器。无线模块如图6.2.1所示,能够实时收发数据。上位机界面如图6.2.3所示,可以收集智能车的实时赛道信息,我们能够更加直观方便地观察智能车的状态,方便调试。图6.2.1 NRF2401无线模块图6.2.3上位机界面第七章 车辆参数车辆参数如表7.1所示 表7.1 车辆参数车模质量约1200克车模几何尺寸长宽高:35cm17cm28cm传感器个数线性CCD 1,陀螺仪1个,加速度计1个,编码器2个红外传感器3个电机个数2个芯片个数TCRT5000 3个,BTS7970 4个,LM2940 3个,LM1117 1个,MC9S12XS128芯片1个,

31、LM358 3个赛道检测精度5mm赛道检测频率100次每秒总电容量约1720微法总功率约8W致谢在整个赛车比赛准备过程当中,我们收获颇丰,从最初对车模结构的了解与摸索,到对赛车跑动的算法设计,以及对电路原理图的设计绘制与PCB的制作,很多事物对我们是新的,很多问题对我们来说是非常有挑战的,我们自身的努力固然重要,但是我们队各个难关的克服,都离不开其他人的帮助。在参加完赛区比赛后,我们发现自己跟兄弟学校的不足之处,主要在于传感支架比较重,不够简洁、长直道加速后转弯摩擦不够强,不足以提供转弯向心力、轮子会打滑等等。这些都提醒我们,以后要注意提高小车机械结构上的改造能力,要完善自身的理论基础。首先,

32、感谢飞思卡尔半导体公司,感谢教育部,自动化专业教学指导分委会为我们全国高校的学子,提供了一个锻炼团队合作和创新能力的竞赛平台。其次,我们要感谢学校和机电工程学院领导的支持,他们为我们提供了一个良好的实验室,一个良好的工作环境,还有进行试验所需的经费和各种物质条件。没有他们提供的物质支持,我们的工作将很难顺利进行。最后,我们还要感谢在实验室其他组别的同学。在调试自己组别小车的同时也给我们提出了一些宝贵的意见和建议。参考文献1陈静.两轮自平衡机器人模型及控制方法研究D.北京工业大学硕士学位论文,2008.2邓岳.基于MC9S12DGl28单片机智能车设计与实现J.微型电脑应用,2008.3李晨.基

33、于飞思卡尔单片机 MC9S12XS128 的智能车设计J.2012(33):81-83.4刘建刚,程磊,黄剑,张政.基于CCD 图像识别的HCS12 单片机智能车控制系统J.光电技术应用.2007(22):51-54.5卓晴.电磁组智能车调试方案V2.06张阳,吴晔,滕勤等编著.MC9S12XS单片机原理及嵌入式系统开发M.北京:电子工业出版社,2011.7潘峥嵘,朱翔.基于线阵CCD视觉导航系统设计J.甘肃科学学报,2010(22):119-122.8李杰,崔玉龙,司维鹏,王圆月,金闻名. 基于线阵CCD的运动板材边缘检测方法J.应用光学,2008(29):275-278.9王善坤,陈银萍.

34、 基于线阵CCD的角度测量方法J.应用光学,2010(26):22-25.10王善坤,陈银萍. LabVIEW8.20程序设计从入门到精通M.北京:清华大学出版社,2007.11孙同景.Freescale 9S12十六位单片机原理及嵌入式开发技术M.北京:机械工业出版社,2007.附录程序Main.c#include /* common defines and macros */#include derivative.h /* derivative-specific definitions*/#include INITIAL.H#include NRF24L01.Hvoid main(void

35、) Initial(); /* 初始化 */ NRF_Init(); /无线初始化 delayms(6500); /* 启动倒计时 */ EnableInterrupts; /开中断 for(;) binaryzation (); _FEED_COP(); /* loop forever */ /* please make sure that you never leave main */ /*中断响应程序*/*/#pragma CODE_SEG NON_BANKEDvoid interrupt 66 PIT0_ISR(void) float x=0; int y=0; static int

36、one_in=1; /时间轴,可以作为,各种时间坐标的时间度量/ Speedtimer+; Systime1+; TimerCnt20ms+; if(Systime1=65000)Systime1=600; if(Systime1=0 & Systime1=3) TimerCnt20ms=0; LED1 = LED1; ImageCapture(Pixel); CalculateIntegrationTime(); / Read_AD(); Error_calculate(); Pos_cal(); / 计算出赛道的偏差。 Kalman_Filter(); /for(i=0;i=4) Spee

37、dtimer=0; SpeedL =SpeedLCount; SpeedLCount=0; SpeedR =SpeedRCount; SpeedRCount=0; Flag_Adjustment_MOTO=1; / / if(Systime1%2)=0) PWM_walkspeed_calculate(); PWM_stand_calculate(); / 计算站立所需的pwm的设置 / 跌倒保护 x = angle ; y = (int)x; if(abs(y)=500 & (Systime1=100 ) ) PWME=0x00; else /在主程序中,一直 姿态输出显示。 PITTF_P

38、TF0=1; /CLER FLAG void interrupt 8 TIM0(void) if(TFLG1_C0F = 1) TFLG1|=1; TC0 = 0 ; SpeedLCount + ; void interrupt 9 TIM1(void) if(TFLG1_C1F = 1) TFLG1|=1; TC1 = 0 ; SpeedRCount + ; void interrupt 25 NRF_int(void) NRF_INTSvr(sensor_ad);#pragma CODE_SEG NON_BANKEDNRF24L01.c#include NRF24L01.hconst by

39、te TX_ADDRESSTX_ADR_WIDTH = 0x34,0x43,0x10,0x10,0xe7; / Define a static TX addressconst byte RX_ADDRESSRX_ADR_WIDTH = 0x34,0x43,0x10,0x10,0xe7; / Define a static RX address#define SCK PTS_PTS6/-延时函数-void NRF_Delay(int us) / 48MHz下延时1us int ii,jj; if (us1) us=1; for(ii=0;iius;ii+) for(jj=0;jj4;jj+);

40、/48MHz-1us /-SPI初始化-void SPI_init(void) /SPI初始化 SPI0CR1=0x50; SPI0CR2=0x00; SPI0BR=0x10;/24MHz下6MHz的频率 DDRS_DDRS7=1;/NSS输出 DDRS_DDRS6=1;/SCK输出 DDRS_DDRS5=1;/MOSI输出 DDRS_DDRS4=0;/MISO输入 xzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz DDRS_DDRS3=1;/C

41、E口 /-中断接口初始化-void NRF_INT_Init(void) /中断接口初始化,IRQ口接在PH0上 DDRH_DDRH0=0; PERH_PERH0=1; PPSH_PPSH0=0; PIEH_PIEH0=1; /-SPI发送一个字节,同时返回一个字节-byte SPI_RW(byte TxData) while(!(SPI0SR_SPTEF); SPI0DR=TxData; while(!(SPI0SR_SPIF); return(SPI0DRL); /-/-向寄存器写数据-byte SPI_RW_Reg(byte reg, byte value) byte status,temp; CSN=0; / CSN置低,开始传输数据 status = SPI_RW(reg); / 选择寄存器,同时返回状态字 temp=SPI_RW(value); / 然后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论