【ARM】ARM接口技术

  • 0开发工具的使用
    • 1安装keil4
    • 2运行MDK411EXE安装
    • 3选择好要安装的目的位置
    • 4安装完成并运行
    • 5安装JLink驱动
    • 6运行测试例程验证开发板是否OK
  • 1自己做一个例子
    • 1新建一个项目
    • 2选择与开发板对应的CPU型号
    • 3设置一个好的目标和组
    • 4配置目标
    • 5创建一个测试文件
      • 51创建mainc文件
      • 52建一个汇编文件
      • 53建立一个ini文件
    • 6设置参数
    • 7上板子调试
  • 2ARM接口原理
    • 1查看原理图
    • 2GPIO控制原理
    • 21GPBCON
    • 22GPBDAT
    • 3程序怎么写
    • 4练习自己实现beep
  • 附录

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) {  

// <o> 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 .\obj\new.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

GPBCON xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
GPB x x x x x 10 9 8 7 6 5 4 3 2 1 0

两个位控制一个引脚,所以GPB0~GPB10共11各引脚,需要0~21共22各位来设置
00—-该引脚配置为输入
01—-该引脚配置为输出
10——该引脚配置为其他特殊功能
11——一般引脚表示保留,未使用
要让我们四个LED亮灭,GPBCON寄存器该如何设置呢?
GPBCON===?????
GPBDAT是数据寄存器,用来控制(或者反应)引脚的高低电平,该寄存器是一个位对应一个引脚,如果某个位为0那么对应引脚为低电压,如果为1则引脚为高电平

2.2.2GPBDAT

GPBDAT xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
GPB xxxx xxxx xxxx xxxx xxxx x 10 9 8 7 6 5 4 3 2 1 0

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

2.3程序怎么写

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

这里的地址,就是cpu提供给我们控制它的接口。
知道了这个接口,代码怎么操作呢?
这里涉及到怎么访问可读性的绝对地址问题?

void delay(int time)
{
   int i,j;
   for(i=0; i<time; 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

Wu_Being 博客声明:本人博客欢迎转载,请标明博客原文和原链接!谢谢!
《【ARM】ARM接口技术》
http://blog.csdn.net/u014134180/article/details/72887158

如果你看完这篇博文,觉得对你有帮助,并且愿意付赞助费,那么我会更有动力写下去。

时间: 2024-10-28 04:50:54

【ARM】ARM接口技术的相关文章

一美分成就ARM ARM到底是做什么的?

昨日软银确认以234亿英镑(约合2215亿元人民币)收购芯片研发巨头ARM,成为亚洲企业在英国完成的最大规模的并购交易. ARM并不为公众所知,它是隐藏在巨头身后的巨头.ARM商业模式是对其他硬件厂商进行技术授权,营收来源中最大的两部分是处理器版权和处理器授权.苹果.高通都是它的下游客户.ARM成功原因甚多,核心因素当然是产品好,但一台手机1美分的低价收费,轻徭薄赋策略无疑是其大获成功的重要原因之一. 想快速了解这家公司,要借助其竞争对手因特尔,以及行业下游公司高通. ARM只提供技术路线和方案

《工业控制网络安全技术与实践》一2.5.5 PLC的接口技术

2.5.5 PLC的接口技术 本文讲的是工业控制网络安全技术与实践一2.5.5 PLC的接口技术 1.对接口电路的要求 1)能够可靠地传送控制机床动作的相应控制信息,并能够输入控制机床所需的有关状态信息.信息形式有数字量(以8位二进制形式表示的数字信息).开关量(以1位二进制数"0"或"1"表示的信息)和模拟量3种. 2)能够进行相应的信息转换,以满足CNC(数控装置)系统的输入与输出要求(常把数控机床分为CNC侧和MT(Machine Tool,机床)侧,PLC位

msaa-Active Accessibility 接口技术 遍历元素,如何取得句柄

问题描述 Active Accessibility 接口技术 遍历元素,如何取得句柄 我现在已经能做到使用 Active Accessibility 接口技术 遍历元素出IE里面所有元素了,但是不知道如何取对应的句柄 这是我的部分代码 foreach (var childChild1 in clientChilren) { if (childChild1.GetType().ToString().IndexOf("Object") > -1) { IAccessible chil

msaa- MS Active Accessibility 接口技术问题

问题描述 MS Active Accessibility 接口技术问题 #include #include #include #include "atlbase.h" #include #pragma comment(lib,"oleacc.lib") BOOL FindChild (IAccessible* paccParent, char* szName, char* szRole, char* szClass, IAccessible** paccChild,

【黑科技】新一代脑机接口技术基石:通过大脑扫描数据重建图像

近日,中国科学院自动化研究所的研究团队提出了一种令人既兴奋又恐慌的大脑黑科技:"读脑术".据 5月6号的MIT Technology Review 头条报道,读脑术算法可以通过大脑扫描数据重建图像,其评论道,"新提出的技术有效克服了这个领域的一系列难点,能够更加精确地读懂人类大脑信号,还原出人眼所看到的视觉场景.该技术不仅对计算神经科学意义重大,也是研发新一代脑-机接口技术的基石."   That's interesting work with significan

113_《DELPHI接口技术开发实例解析》

<DELPHI接口技术开发实例解析> Delphi 教程 系列书籍 (113) <DELPHI接口技术开发实例解析> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: 下载 作者: 张仿彦 出版社:机械工业出版社 ISBN:7111203216 上架时间:2006-12-28 出版日期:2007 年1月 开本:16开 版次:1-1 内容简介 本书包括食堂管理系统.程控电话计费系统.批发零售管理系统.vod点播系统.钢筋拉伸试验管理系统5个案例,这5个不同行业

精神控制?心灵感应?脑机接口技术让科幻成为现实

你希望像X战警中的X教授那样拥有精神控制的能力吗?或者你也曾想过和亲人能够心灵感应呢?最近大脑-计算机对接的进展正在将脑间直接传递思想的科学幻想变成现实.过去几年发表的一系列研究宣告了动物之间.人之间甚至人鼠之间脑活动的直接传输.这种"脑脑对接"(BBI)通过连接两个个体的大脑实现了脑活动的实时直接传递.虽然目前的脑机接口技术与科幻作品中的描述无法比拟,但通过意念简单操纵机器,正一点一点走进现实. ECAI 2016 精选论文摘要 标题:基于脑电波的脑机接口高阶相关系数分析 摘要:基于

php面向对象全攻略 (十四) php5接口技术_php基础

20.PHP5 接口技术 PHP 与大多数面向对象编程语言一样,不支持多重继承.也就是说每个类只能继承一个父 类.为了解决这个问题,PHP 引入了接口,接口的思想是指定了一个实现了该接口的类必须 实现的一系列方法.接口是一种特殊的抽象类,抽象类又是一种特殊的类,所以接口也是一 种特殊的类,为什么说接口是一种特殊的抽象类呢?如果一个抽象类里面的所有的方法都是 抽象方法,那么我们就换一种声明方法使用"接口":也就是说接口里面所有的方法必须都是 声明为抽象方法,另外接口里面不能声明变量,而且

php接口技术实例详解_php技巧

本文实例讲述了php接口技术.分享给大家供大家参考,具体如下: 1.接口是一种特殊的抽象类,为什么这么说呢?如果一个抽象类中所有的方法都是抽象方法,那么我们就换一种称呼,称为"接口". 2.另外接口中不能声明变量. 3.接口中所有的成员都是public权限的.所有的子类在实现时,也一定要使用public权限去实现. 4.声明一个类的时候,我们用关键字"class",而声明接口的时候,我们用关键字"interface". <?php //定义