19. MPU接口 (MPU)
19.1. 概述
SWM221系列所有型号MPU模块操作均相同。使用前需使能MPU模块时钟。
19.2. 特性
8位 MPU 数据接口位宽
半字或字访问时,硬件自动发出两个连续的 MPU 读或写事务。
支持MPU接口
接口时序可调
输出时钟可配置为空闲时关闭
通过CPU或者DMA工作
19.3. 功能描述
19.3.1. 模块结构
图 84 MPU模块结构框图
19.3.2. 数据接口
MPU模块包括RD、WR、RS、CS、DATA等控制接口。使用时将相关GPIO功能设置为MPU模块接口信号。
如表格 表格 7 所示:
信号名称 |
信号方向 |
功能 |
---|---|---|
RD |
O |
MPU:I80接口下RD信号 |
WR |
O |
MPU:I80接口下WR信号,M68接口下E信号 |
RS |
O |
MPU:I80、M68接口下RS信号 |
CS |
O |
MPU:I80接口下CS信号,M68接口下CS、RW信号 |
DATA |
I/O |
MPU接口数据输出 |
19.3.3. 接口时序
MPU接口时序如 图 85 所示:
图 85 MPU接口时序图
Tas周期从CS下降沿到WR下降沿,为地址建立时间;
Tpwlw周期从WR下降沿到上升沿,为WR操作脉冲宽度;
Tah周期从WR上升沿到CS上升沿,为地址保持时间;
Ttail周期从CS上升沿到CS下降沿,为与下次选通之间的时差。
19.3.4. 操作说明
配置CR寄存器,设置参数
CPU写IR寄存器,配置待访问寄存器地址
CPU写DR寄存器,写入数据,或者CPU读DR寄存器,接收数据
查询BUSY状态位为0,表示一个数据传输结束
如果使用DMA操作,需要先使能SR寄存器中的DMAEN位,然后根据写入或读出,将DR寄存器地址配置为DMA模块的目标地址或源地址,再启动DMA模块的操作
19.4. 寄存器映射
名称 |
偏移 |
复位值 |
---|---|---|
MPU BASE:0x40050000 |
||
SR |
0x8 |
0x00000000 |
CR |
0x0C |
0x00000000 |
IR |
0x10 |
0x00000000 |
DR |
0x14 |
0x00000000 |
19.5. 寄存器描述
19.5.1. 启动传输寄存器SR
偏移: 0x8 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
ENDIAN |
DMAEN |
BUSY |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:3 |
RO |
||
2 |
ENDIAN |
R/W |
如果对IR和DR寄存器发起半字节访问: 0:先发送低字节,再发送高字节 1:先发送高字节,再发送低字节 |
1 |
DMAEN |
R/W |
使能DMA读写。当使能芯片内部DMA通道进行数据搬移时,需要先配置DMAEN为1。 |
0 |
BUSY |
RO |
传输状态指示,RO 为1表示正在传输出,为0表示空闲。当使用CPU进行数据搬移时,需要先查询该bit是否为0(空闲);当使用DMA进行数据搬移时,可忽略此bit。 |
19.5.2. 参数控制寄存器CR
偏移: 0x0C |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
CS0WR0 |
WRHOLD |
||||||
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
WR1CS1 |
WCS1_0 |
RDHOLD |
|||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
RDHOLD |
RCS1_0 |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:22 |
RO |
||
21:20 |
CS0WR0 |
R/W |
控制从CSn下降沿到WRn下降沿的时间。 0表示1个时钟周期。时序要求中Tas和Tcsbs由这个寄存器保证 |
19:16 |
WRHOLD |
R/W |
控制WRn低电平的持续时间。 0表示1个时钟周期。 |
15:14 |
WR1CS1 |
R/W |
控制WRn上升沿到CSn上升沿的时间。 0表示1个时钟周期。 |
13:10 |
WCS1_0 |
R/W |
写操作时,控制从CSn上升沿到CSn下除沿的时间。 0表示1个时钟周期。 |
9:5 |
RDHOLD |
R/W |
控制RD低电平的持续时间。 0表示1个时钟周期 |
4:0 |
RCS1_0 |
R/W |
在读数据操作时,控制从CSn上升沿到下降沿的时间。 0表示1个时钟周期。 |
19.5.3. 指令寄存器IR
偏移: 0x10 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
IR |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
IR |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
IR |
R/W |
指令 |
19.5.4. 数据寄存器DR
偏移: 0x14 |
复位值: 0x00000000 |
31 |
30 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
21 |
20 |
19 |
18 |
17 |
16 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
DR |
|||||||
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
DR |
位域 |
名称 |
类型 |
描述 |
---|---|---|---|
31:16 |
RO |
||
15:0 |
DR |
R/W |
数据 |