ARM寄存器指令总结(二)
来源:互联网 发布:淘宝上店铺状态非正常 编辑:程序博客网 时间:2024/06/10 15:14
1
存储器加速模块MAM是将下一个需要的ARM指令锁存起来,以防止CPU取指暂停。
MAM所用的方法是将FLASH存储器分成两组,每一组都可以独立进行访问
MAMCR
Bit0-1 00时,MAM被禁止;01时,部分功能使能;10时,完全使能,11保留
Bit2-7保留
MAMTIM
Bit0-2 000时,保留;001-111 MAM取指周期分别为1-7个处理器时钟。
Bit3-7 保留
程序示例:
MAMCR = 0;
if( Fcclk < 20000000 )
{
}
Else if( Fcclk < 40000000 )
{
}
Else
{
}
MAMCR = 2;
2
4个存储器组 bank0-bank3,片选信号分别为CS0-CS3;每个16MB空间;为AMBA AHB总线上的从设备。地址输出线 A[23:0],地址位A25,A24用于4个存储器组的译码。数据线为D[31:0]。OE输出使能信号,低有效。BLS[3:0]输出字节定位选择信号,低有效。WE 输出,写使能信号,低有效。
外部存储器的地址范围:
BANK0
BANK1
BANK2
BANK3
寄存器描述
BCFG0 -0xFFE00000-0x2000FBEF 存储器组0的配置寄存器
BCFG1 -0xFFE00004-0x2000FBEF 存储器组1的配置寄存器
BCFG2 -0xFFE00008-0x2000FBEF 存储器组2的配置寄存器
BCFG3 -0xFFE0000C-0x2000FBEF 存储器组3的配置寄存器
每个位的定义看手册吧,太多了。。。
启动代码中的总线的初始化设置,程序清单:
LDR
ENDIF
;0x0f814914
;保留位0000 ;地址线 A23-0 11111 ;使能P2.31,P2.30,P2.29和P2.28 000;保留位00 ;01 使能CS3;使能CS2 01;? 0;保留 0;使能CS1 1;保留 00; 使能WE 1;使能P3.28,P3.29 00; 01 ?;0100 调试。
;0001 16位,0000 不是BRUST ROM,不写保护,
;0000 0000 保留 11111 WST2
;0 保留 1111 IDCY
3
U0RBR -0xE000C000 接收器缓存寄存器 (RO)
如果要访问U0RBR,U0LCR的DLAB 必须为0;
U0THR -0xE000C000 发送器保存寄存器
如果要访问U0THR,U0LCR的DLAB 必须为0;
U0IER - 0xE000C004-0中断使能寄存器
Bit0
Bit1
Bit2
Bit3-7 保留
如果要访问U0IER,U0LCR的DLAB 必须为0;
U0DLL
U0DLM
这两个寄存器一次构成一个16位的除数,用于产生波特率。
要访问他们,U0LCR的DLAB 必须为1;
UXDLMUXDLL = Fpclk/16/baud
U0IIR 0xE000C008-0x01 中断标志寄存器 (RO)
Bit0
Bit1-3 中断标志,011 RLS 010 RDA 110 CTI 001 THRE.
Bit4-5 保留
Bit6-7 FIFO使能,等效于U0FCRDE bit0。
在退出中断服务程序前,必须读U0IIR来清除中断。
U0FCR 0xE000C008-0
Bit0 FIFO使能,置位才能实现正确的UART0操作,该位的任何变化都降清空FIFO
Bit1 Rx FIFO复位,该位置位会自动清零RXFIFO,并该位自动清零
Bit2 Tx FIFO复位,该位置位会自动清零TXFIFO,并该位自动清零
Bit3-5 保留
Bit6-7 RX触发选择,00 触发点0,1字节,01,4字节,10,8字节,11,14字节。
U0LCR 0xE000C00C-0
Bit0-1
Bit2
Bit3
Bit4-5
Bit6
Bit7
U0LSR 0xE000C014-0
Bit0
Bit1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
U0SCR 0xE000C01C-0
程序代码示例:
1 UART0 初始化:
#define
void
{
}
2 查询方式发送数据
void
{
}
3查询方式接收数据
Uint8 UART0_RevByte(void)
{
Uint8 rcv_data;
While((U0LSR&0X01)==0);
Rcv_data = U0RBR;
Return (rcv_data);
}
4
typedef struct UartMode
{
}UARTMODE;
uint8 rcv_buf[8];
volatile uint8 rcv_new;
*********************************************************************
** 函数名称 :UART0_Init()
** 函数功能 :串口初始化,设置工作模式和波特率。
** 入口参数 :baud
**
** 出口参数 :1-初始化成功,
*********************************************************************
int8 UART0_Init (uint32 baud, UARTMODE set)
{
}
在主函数里面;
UARTMODE set;
5
void __irq IRQ_UART0 (void)
{
}
4 I2C接口控制
I2C总线上存在以下两种类型的数据传输:
(1)
(2)
I2C控制寄存器
I2CONSET
Bit0-1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
I2CONCLR
Bit0-1
Bit2
Bit3
Bit4
Bit5
Bit6
Bit7
I2STAT
Bit0-2
Bit3-7
I2DAT
包含发送和接收的数据,只能在SI置位的情况下访问
I2ADR
Bit0
Bit1-7
只能在从模式下使用
I2SCLH
SCL高电平保持的pclk周期数,必须大于4
I2SCLL
SCL低电平保持的pclk周期数,必须大于4
位频率/总线速率 = Fpclk/( I2SCLH+ I2SCLL)
要保证I2C通信速率在0-400khz。
4种操作模式:主发送器模式、主接收器模式、从发送器模式和从接收器模式。
主模式的配置
I2CONSET 必须配置为 I2EN 1 STA 0 STO 0 SI 0 AA 0;
主模式下初始化代码
void
{
}
主发送模式的格式:
S(起始位) + 从地址 + R(1)/W(0) + A +
从模式的配置
I2CONSET 必须配置为 I2EN 1 STA 0 STO 0 SI 0 AA 1;
从模式下的初始化代码
void
{
}
从接收模式的格式:
S(起始位) + 从地址 + W(0) + A +
- ARM寄存器指令总结(二)
- ARM高分笔记--(二)ARM寄存器
- 影响CPSR状态寄存器的ARM汇编指令--总结
- ARM汇编指令(ARM工作模式、寄存器)
- arm寄存器和指令集
- ARM寄存器总结:
- ARM寄存器总结
- ARM寄存器总结
- ARM寄存器总结
- ARM寄存器总结
- ARM 状态寄存器总结
- ARM寄存器总结:
- ARM汇编笔记(1)——寄存器、常用指令
- ARM基础知识教程(二):ARM处理器的寄存器
- ARM基础知识教程(二):ARM处理器的寄存器
- ARM基础知识教程(二):ARM处理器的寄存器
- ARM处理器 寄存器 汇编指令集
- ARM指令集和常用寄存器
- android 字符设备驱动程序的一点小总结
- SQL Server 高性能写入的一些总结
- PHP中extract()函数的妙用
- 要将linux内核的带级别控制的printk内容打印出来,在命令行 输入 dmesg -n 8 就将所有级别的信息都打印出来
- CentOS5.5关闭sendmail
- ARM寄存器指令总结(二)
- 【C++数据结构学习笔记---线性表】带头结点的单循环链表
- android应用程序如何获得系统权限
- 第二周 项目二:读取数据到结构体数组
- POJ1952 BUY LOW, BUY LOWER
- (每日一转)黑马程序员----跟着老毕学Java之基础篇(三)
- 第二周 项目三:用结构体数组作计算
- jquery tools 系列(三)——scrollable(1)
- 让程序可以脱离opencv,vs等开发环境运