单片机
返回首页

【ARM】ARM接口技术

2022-05-13 来源:eefocus

#0开发工具的使用

##0.1安装keil4

在arm资料1压缩文件中找到mdk411.rar,解压,双击MDK411.exe进行安装

这里写图片描述

##0.2运行MDK411.EXE安装

这里写图片描述
这里写图片描述

##0.3选择好要安装的目的位置

这里写图片描述

点NEXT,安装界面如下

这里写图片描述

##0.4安装完成并运行

这里写图片描述

安装完成后,鼠标右键单击该程序,以管理员身份运行该程序:

这里写图片描述

把CID拷贝下来:

这里写图片描述

复制Computer ID:C2043-1B7RE ,然后运行

这里写图片描述

把CID填入上图,然后:

这里写图片描述

复制注册码:

这里写图片描述

复制注册码填入:

这里写图片描述

点ADD LIC后,提示:

这里写图片描述

提示:*** LIC Added Sucessfully ***

说明注册成功了。

##0.5安装JLink驱动

在资料2中可以找到Setup_JLinkARM_V408k.exe文件,双击安装JLink驱动

这里写图片描述

将会弹出如下窗口

这里写图片描述

然后一直点击next

这里写图片描述

最后提示出如下界面

这里写图片描述

##0.6运行测试例程,验证开发板是否OK

运行老师给的mini2440_led工程文件,即双击mini2440_led.uvproj文件

这里写图片描述

可以看到以下界面:

这里写图片描述
这里写图片描述

双击点开main.c,看看源码

这里写图片描述

看不懂,没关系,直接编译,看结果,点

这里写图片描述

在最下方提示出如下结果

这里写图片描述

紧接着点

这里写图片描述

进入调试界面

这里写图片描述

点击运行程序,听开发板蜂鸣器的运行状态!

(蜂鸣器一会响,一会停)

这里写图片描述

点击上面红【  X】停止运行

再次点击点【 这里写图片描述 】退出调试状态。

#1自己做一个例子

##1.1新建一个项目

这里写图片描述
这里写图片描述

##1.2选择与开发板对应的CPU型号

这里写图片描述
这里写图片描述

##1.3设置一个好的目标和组

这里写图片描述
这里写图片描述

结果如下:

这里写图片描述

##1.4配置目标

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

点OK!

##1.5创建一个测试文件

###1.5.1创建main.c文件

这里写图片描述
这里写图片描述

保存为main.c

这里写图片描述
这里写图片描述

把main.c添加到工程

这里写图片描述
这里写图片描述

###1.5.2建一个汇编文件

同样的步骤建一个汇编文件,保存,添加!

这里写图片描述
这里写图片描述

###1.5.3建立一个ini文件

这里写图片描述

内容如下:

说明:倒数第三行文件要根据实际情况进行设置


FUNC void SetupForStart (void) {  

  

// Program Entry Point  

  PC = 0x30000000;  

}  

  

  

FUNC void Init (void) {  

  

  _WDWORD(0x4A000008, 0xFFFFFFFF);      // Disable All Interrupts  

  

  _WDWORD(0x53000000, 0x00000000);      // Disable Watchdog Timer  

    

                                        // Clock Setup   

                                        // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz  

  _WDWORD(0x4C000000, 0x0FFF0FFF);      // LOCKTIME  

  _WDWORD(0x4C000014, 0x0000000F);      // CLKDIVN  

  _WDWORD(0x4C000004, 0x00043011);      // MPLLCON  

  _WDWORD(0x4C000008, 0x00038021);      // UPLLCON  

  _WDWORD(0x4C00000C, 0x001FFFF0);      // CLKCON  

  

                                        // Memory Controller Setup for SDRAM  

  _WDWORD(0x48000000, 0x22000000);      // BWSCON  

  _WDWORD(0x4800001C, 0x00018005);      // BANKCON6  

  _WDWORD(0x48000020, 0x00018005);      // BANKCON7  

  _WDWORD(0x48000024, 0x008404F3);      // REFRESH  

  _WDWORD(0x48000028, 0x00000032);      // BANKSIZE  

  _WDWORD(0x4800002C, 0x00000020);      // MRSRB6  

  _WDWORD(0x48000030, 0x00000020);      // MRSRB7  

  

  _WDWORD(0x56000000, 0x000003FF);      // GPACON: Enable Address lines for SDRAM  

}

  

  

// Reset chip with watchdog, because nRST line is routed on hardware in a way   

// that it can not be pulled low with ULINK  

  

_WDWORD(0x40000000, 0xEAFFFFFE);        // Load RAM addr 0 with branch to itself  

CPSR = 0x000000D3;                      // Disable interrupts  

PC   = 0x40000000;                      // Position PC to start of RAM  

_WDWORD(0x53000000, 0x00000021);        // Enable Watchdog  

g, 0                                    // Wait for Watchdog to reset chip  

  

Init();                                 // Initialize memory  

LOAD .objnew.axf INCREMENTAL         // Download program  

SetupForStart();                        // Setup for Running  

g, main                                 // Goto Main


保存为ram.ini


##1.6设置参数

这里写图片描述
这里写图片描述

##1.7上板子调试


这里写图片描述
这里写图片描述
这里写图片描述

#2ARM接口原理

##2.1查看原理图

思路:

要控制一个设备,首先想到的是搞清楚这个硬件设备在什么位置。 怎么办?

这里写图片描述

参考《mini2440-um-20090223.pdf》第13页

找到丝印,再找原理图

这里写图片描述

参考原理图《mini2440原理图.pdf》第3页。

通过网络表nLED_1,在原理图中找到控制这个灯的cpu引脚。

这里写图片描述

找到cpu引脚与LED灯的对应关系如下

GPB5----------------- nLED _1

GPG6----------------- nLED _2

GPB7----------------- nLED _3

GPB8----------------- nLED _4

接下来怎么办?

接下来就要看cpu的说明书了,就像我们买了一个微波炉,使用前就要看一下它的说明书,我们CPU的说明书就是s3c2440的datasheet。即《S3C2440全套中文手册.PDF》


##2.2GPIO控制原理

这里写图片描述
这里写图片描述
这里写图片描述

##2.2.1GPBCON

image.png

两个位控制一个引脚,所以GPB0GPB10共11各引脚,需要021共22各位来设置

00----该引脚配置为输入

01----该引脚配置为输出

10------该引脚配置为其他特殊功能

11------一般引脚表示保留,未使用

要让我们四个LED亮灭,GPBCON寄存器该如何设置呢?

GPBCON===?????

GPBDAT是数据寄存器,用来控制(或者反应)引脚的高低电平,该寄存器是一个位对应一个引脚,如果某个位为0那么对应引脚为低电压,如果为1则引脚为高电平

##2.2.2GPBDAT

image.png

原理搞清楚了,程序怎么写?

##2.3程序怎么写

我们要把某个引脚设置为输出,也就是我们的GPBCON寄存器要配置为0x15400,那么这个值怎么给我们的cpu呢?

这里写图片描述

这里的地址,就是cpu提供给我们控制它的接口。

知道了这个接口,代码怎么操作呢?

这里涉及到怎么访问可读性的绝对地址问题?


void delay(int time)

{

   int i,j;

   for(i=0; i      for(j=0; j<1000; j++);

}

int main(void)

{

//GPBCON 0x56000010 R/W 配置端口B 的引脚

    //31                                    0

    //0000 0000 0000 0001 0101 0100 0000 0001

// 0 0   0     1    5    4   0    1 GPB0

    *(int *)0x56000010 = 0x15401;   //设置GPB5/6/7/8 to output  and 1 beep


//GPBDAT 0x56000014 R/W 端口B 的数据寄存器

    //31                                    0

    //0000 0000 0000 0000 0000 0001 1110 0001

// 0 0   0     0    0    1   e    1 GPB0

*(int *)0x56000014 = 0x01;   //让GPB第5/6/7/8 设置为低电平,第1位为高:为响亮

    while(1)

{

       *(int *)0x56000014 = 0x00000001; //响亮

delay(1000);

   *(int *)0x56000014 = 0x000001e0;

    delay(1000);

}


}


学生动手实现延时函数,宏定义,led配置,led亮,led灭函数。


##2.4练习,自己实现beep


#附录


工具下载链接:

https://github.com/1040003585/Mini2440/tree/master/Tools

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章