南昌大学嵌入式综合实验一介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合实验一直流、步进电机综合控制系统设计
一、实验项目名称
直流、步进电机综合控制系统设计
二、实验目的
1、初步熟悉实验GPIO口的初始化设置,并熟悉实验箱各个模块的功能
2、掌握步进机的控制原理及利用延时脉冲来改变步进电机速度
3、掌握直流电机的控制原理及利用pwm占空比控制来改变速度
4、学习IIC总线读取和写数据原理,并掌握对CAT1025E2PROOM操作方
法
5、学会控制数码管的显示UART串口函数,并初步掌握中断处理函数的写
法
三、实验基本原理
基于S3C2440处理器分别控制LED灯闪烁,串口打印,RTC显示,
步进电机控制和直流电机控制以及EEPROM的读写。
由于S3C2440自带串口模块,RTC模块和EEPROM模块,配置好相
应的寄存器值就可控制好各种外设。
一、GPIO口设置
S3C2410芯片共计有117个GPIO口,每个GPIO口都至少有三个功能(输入、输出、第三功能等)
每个GPIO口都有三个寄存器:
CON寄存器设置其功能,DAT寄存器设置其高低电平,UP寄存器设置其
是否使能上拉电阻。
具体设置可参考用户手册。
代码举例:rGPEDAT=rGPEDAT|(0x03<<11)
设置GPE11、GPE12为高电平
rGPECON=(rGPECON&(~(0x0F<<22)))|(0x05<<22);
设置GPE11、GPE12为GPIO输出模式
二、RTC设置
RTC能够提供时分秒,年月日的计时功能,还具备定时报警功能。
RTC 单元使用后备电池供电,独立的时钟源(32.768khz)。
读取RTC需要先对其进行设置。
对其相关的有RTCCON,BCDYEAR,BCDMON,BCDDATE,BCDHOUR,BCDMON,BCDSECORD,BCDDAY.寄存器。
如下面的代码
if(date)
{
g_year=rBCDYEAR;g_month=rBCDMON;
g_date=rBCDDATE;g_day=rBCDDAY;
}
g_hour=rBCDHOUR;g_min=rBCDMIN;
g_sec=rBCDSEC;
三、步进电机
步进电机是将电脉冲转化为角位移的数据控制电机,电机步距18度,四相控制(AB-BC-CD-DA-AB)[正转](AB-DA-CD-BC-AB)[反转]。
其电路如图所示:
GPIOSET(MOTOA);GPIOSET(MOTOB);
DelayNS(dly);
GPIOCLR(MOTOA);GPIOCLR(MOTOB);
GPIOSET(MOTOB);GPIOSET(MOTOC);
DelayNS(dly);
GPIOCLR(MOTOB);GPIOCLR(MOTOC);
GPIOSET(MOTOC);GPIOSET(MOTOD);
DelayNS(dly);
GPIOCLR(MOTOC);GPIOCLR(MOTOD);
GPIOSET(MOTOD);GPIOSET(MOTOA);
DelayNS(dly);
GPIOCLR(MOTOD);GPIOCLR(MOTOA);
四、直流电机
直流电机的控制相对较为简单。
调节PWM的分频,占空比等改变PWM 的输出,最终实现电机的调速。
根据电路图可以,当TOUT0为低电平的时候,电机反转或者停机;当TOUT0为高电平的时候,电机反转,正转,
停机。
//设置GPH9为GPIO输出模式
rGPHCON=(rGPHCON&(~(0x03<<18)))|(0x01<<18);//GPH9口rGPHDAT=rGPHDAT|(1<<9);//输出0电平rGPHUP=rGPHUP|(1<<9);
//设置GPH9为GPIO输出模式
rGPHCON=(rGPHCON&(~(0x03<<18)))|(0x01<<18);//GPH9口
rGPHDAT=rGPHDAT|(1<<9);//输出0电平
rGPHUP=rGPHUP|(1<<9);
adc0=ReadAdc(0);vin0=adc0/4;//160
if(vin0>254)vin0=254;
rTCMPB0=vin0;
五、IIC以及按键,数码管显示
IIC总线的协议除去总线仲裁相对来说较为简单。
IIC总线是两根线:时钟线,数据线。
在读写的时候,首先发送器件地址,而后选中芯片,挂起其他的芯片。
之后发送器件子地址,选择读写的单元。
最后发送数据。
按键,数码管显示的ZLG7290芯片通过IIC总线读写。
具体操作详见ZLG7290的数据手册。
EEPROM是通过IIC总线读取的,对IIC学习有很重要的意义。
Eeprom 的部分代码如下:
suba[0]=1;//1位子地址
suba[1]=0x00;//子地址
i2c_opsta=ISendStr(CAT1025,suba,dat_buf1,10,data_buf2);
其中,CAT1025为器件地址,suba为器件子地址,dat_buf1为要写入的数据,10为写入数据个数,data_buf2为返回的写入的数据的地址
实验流程图:
四、主要仪器设备及耗材
MAGIC2410开发平台,H-JTAG,PC机各一台五、实验步骤
1,设置ADS编译器各种选项
在Targets的DebugRel中
Target Settings中Post-linker中选择ARM formELF
Language setting中编译器选项内核选中ARM920T
ARM Linker中RO Base设置为0x30000000
自此,编译器设置成功
2将程序加入到ADS编译器并且编译。
编译成功后会生成.AXF二进制文件
3将.Axf文件导入到AXD仿真软件,即可进行单步运行,全速运行程序
六、实验数据及处理结果
加载程序到SDRAM,全速运行出现人机交互界面:
按1键,实验箱的LED按照16进制亮灭
超级终端显示LED显示
实验箱的LED闪烁
按2键,实现加减乘除,
下面选择加法作为测试
下面选择除法作为测试
按3键,显示当前年月日:
按4键,实现步进电机正反转和调速:
超级终端显示步进电机转动信息
注意:当前转速是通过AD采用获得
实验箱的步进电机转动
按5键,实现直流电机调速和正反转!
超级终端显示直流电机信息
注意:转速依据占空比的变化而调整!
实验箱的直流电机转动
按6键,写EEPROM
写入的数据和读出的数据一致,说明EEPROM读写成功!
七、实验心得
通过本实验明白了S3C2410的GPIO的配置,IIC工作时序,步进电机驱动原理、RTC寄存器配置以及直流电机驱动原理,虽然在调试过程中遇到很多的困难,但是静下心来用AXD单步调试之后问题都一一解决。
这样提高了自己独立解决问题的能力和学习能力!
八、参考资料
《S3C2410实验实验手册》
《嵌入式系统开发与实验教程》。