ARM点灯,PWM,中断实验
2017-03-13 19:00
162 查看
点灯实验:
实验目的:控制LED2灯闪烁
一、看原理图 找到灯的原理图,分析灯的电气连接关系
1. 通过搜索LED2或者目录在设备板原理图上找到LED2
2. 分析LED2的电气连接关系,发现只要CHG_COK这个引脚输入高电平,LED2就亮了
3. CHG_COK是一个网络标号,通过在核心板上搜索这个名字可以找到设备板上的这个引脚接在CPU的哪个引脚上
4. 经分析发现CHG_COK接在CPU上的GPX2_7引脚上,这个引脚是功能复用的引脚,而我们仅仅需要的是输出一个高低电平这种功能
二、看芯片手册
1. 看芯片手册找这个引脚对应的寄存器GPX2CON(配置GPX2组所有引脚的功能) GPX2DAT(决定GPX2组引脚的高低电平状态)
2. GPX2CON
Base Address: 0x1100_0000 //基地址
Address = Base Address + 0x0C40 = 0x11000c40
GPX2CON[7] [31:28]:0x1 = Output //控制GPX2_7的输出功能,
GPX2DAT
Address = 0x11000c44
GPX2DAT[7]: [7] = 0 这个引脚是低电平
= 1 这个引脚是高电平
通过超级终端的kermit协议去下载.bin文件
loadb 0x40008000 //将.bin文件下载到0x40008000这个内存地址
go 0x40008000 //从内存的0x40008000这个位置运行
Timer Input Clock Frequency = PCLK/({prescaler value + 1})/{divider value}
{prescaler value} = 1 to 255
{divider value} = 1, 2, 4, 8, 16
Timer Input Clock Frequency = PCLK/(249+1)/4
= 100MHz/1000
= 100KHz 10us PWM的递减计数器每10us减一次
PWM实验
实验目的:用PWM驱动蜂鸣器发出声音
一、看原理图
发现蜂鸣器接在cpu的XpwmTOUT0/LCD_FRM/GPD0_0这个引脚上,我们需要的是PMW的输出功能
二、看芯片手册
1, GPD0CON:GPD0CON[0] [3:0] 0x2 = TOUT_0
2. 看PWM的综述
1. PWM的时钟源 PCLK 100MHz
2. PWM的工作时钟是通过PCLK经过两级分频得到的
3. TCNTB这个寄存器决定输出脉冲的周期
4. TCMPB这个寄存器决定输出脉冲的占空比
3. 分析相关的寄存器
TCFG0 //配置寄存器0 设置一级分频系数
Prescaler 0 [7:0]: 249
TCFG1 //配置寄存器1 设置二级分频系数
Divider MUX0 [3:0] 0010 = 1/4
TCON
Timer 0 auto reload on/off [3]: 1 = Interval mode (auto-reload)
//打开自动重装载(更新TCNTB的值到递减计数器)
Timer 0 manual update [1] :1 = Updates TCNTB0 //打开手动更新TCNTB(更新TCNTB的值到递减计数器)
Timer 0 start/stop [0] : 1 = Starts Timer 0 //开关
TCNTB0
100 PWM输出的脉冲: 100*10us = 1ms
TCMPB0
50 占空比50%
按键中断实验
实验目的:
按键按下,灯会闪烁一次
Supports three interrupt types:
Software Generated Interrupt (SGI)
Private Peripheral Interrupt (PPI)
Shared Peripheral Interrupt (SPI)
key2产生的中断到达cpu核要经过以下三级控制:
1. 外设控制器(GPIO控制器)
2. 中断控制器(GIC)
3. CPU核
SPI号 中断号 中断源
25 57 – EINT[9]
一、看原理图
发现KEY2接在CPU上的GPX1_1引脚上(配置引脚的功能,作为中断功能)
分析发现key2从按下到抬起对应的引脚一共经历了4个状态(设置中断触发方式)
二、看芯片手册
1. 在外设控制器上使能KEY2中断
GPX1CON //引脚的功能配置寄存器
GPX1CON[1] [7:4]:0xF = WAKEUP_INT1[1] //中断功能、
EXT_INT41CON //设置中断的触发方式
EXT_INT41_CON[1] [6:4]: 0x2 = Triggers Falling edge //下降沿触发中断
EXT_INT41_MASK //GPIO控制器上的使能开关
EXT_INT41_MASK[1] [1]: 0x0 = Enables Interrupt //使能KEY2(GPX1_1)
EXT_INT41_PEND //清中断
EXT_INT41_PEND[1] [1]: 写1清中断
ICDISER1 //GIC中,每个中断的小开关,一个位对应一个中断
Set-enable bits [25]: 1 enable
ICDIPTR14
CPU targets, byte offset 1 [15:8]:0x1 //将57号中断分发给CPU0来处理
ICDDCR //全局使能,让所有中断都能到达CPU接口
Enable [0]: 1 enable
ICCICR_CPU0 //全局使能,让所有到达CPU接口的中断都能通过CPU接口到达所连接的处理器
Enable [0]: 1 = Enables signaling of interrupts
ICCPMR_CPU0 //设置中断优先级门限
Priority [7:0]: 一共256个优先级,值越大优先级越低 0xff(门限最低,所有中断都能通过)
ICCIAR_CPU0 //当中断发生了之后,我们可以通过读取这个寄存器获取所发生的中断对应的中断号
ACKINTID [9:0]: The interrupt ID //中断号
ICCEOIR_CPU0 //当中断处理完成之后,将读取到的中断号写回到这个寄存器,表示cpu对这个中断已经处理完成,可以处理下一个中断
EOIINTID [9:0]: The ACKINTID value from the corresponding ICCIAR access.
ICDICPR1 //在GIC的层次上进行清中断操作
Clear-pending bits [25]: 写1清中断
实验目的:控制LED2灯闪烁
一、看原理图 找到灯的原理图,分析灯的电气连接关系
1. 通过搜索LED2或者目录在设备板原理图上找到LED2
2. 分析LED2的电气连接关系,发现只要CHG_COK这个引脚输入高电平,LED2就亮了
3. CHG_COK是一个网络标号,通过在核心板上搜索这个名字可以找到设备板上的这个引脚接在CPU的哪个引脚上
4. 经分析发现CHG_COK接在CPU上的GPX2_7引脚上,这个引脚是功能复用的引脚,而我们仅仅需要的是输出一个高低电平这种功能
二、看芯片手册
1. 看芯片手册找这个引脚对应的寄存器GPX2CON(配置GPX2组所有引脚的功能) GPX2DAT(决定GPX2组引脚的高低电平状态)
2. GPX2CON
Base Address: 0x1100_0000 //基地址
Address = Base Address + 0x0C40 = 0x11000c40
GPX2CON[7] [31:28]:0x1 = Output //控制GPX2_7的输出功能,
GPX2DAT
Address = 0x11000c44
GPX2DAT[7]: [7] = 0 这个引脚是低电平
= 1 这个引脚是高电平
通过超级终端的kermit协议去下载.bin文件
loadb 0x40008000 //将.bin文件下载到0x40008000这个内存地址
go 0x40008000 //从内存的0x40008000这个位置运行
Timer Input Clock Frequency = PCLK/({prescaler value + 1})/{divider value}
{prescaler value} = 1 to 255
{divider value} = 1, 2, 4, 8, 16
Timer Input Clock Frequency = PCLK/(249+1)/4
= 100MHz/1000
= 100KHz 10us PWM的递减计数器每10us减一次
PWM实验
实验目的:用PWM驱动蜂鸣器发出声音
一、看原理图
发现蜂鸣器接在cpu的XpwmTOUT0/LCD_FRM/GPD0_0这个引脚上,我们需要的是PMW的输出功能
二、看芯片手册
1, GPD0CON:GPD0CON[0] [3:0] 0x2 = TOUT_0
2. 看PWM的综述
1. PWM的时钟源 PCLK 100MHz
2. PWM的工作时钟是通过PCLK经过两级分频得到的
3. TCNTB这个寄存器决定输出脉冲的周期
4. TCMPB这个寄存器决定输出脉冲的占空比
3. 分析相关的寄存器
TCFG0 //配置寄存器0 设置一级分频系数
Prescaler 0 [7:0]: 249
TCFG1 //配置寄存器1 设置二级分频系数
Divider MUX0 [3:0] 0010 = 1/4
TCON
Timer 0 auto reload on/off [3]: 1 = Interval mode (auto-reload)
//打开自动重装载(更新TCNTB的值到递减计数器)
Timer 0 manual update [1] :1 = Updates TCNTB0 //打开手动更新TCNTB(更新TCNTB的值到递减计数器)
Timer 0 start/stop [0] : 1 = Starts Timer 0 //开关
TCNTB0
100 PWM输出的脉冲: 100*10us = 1ms
TCMPB0
50 占空比50%
按键中断实验
实验目的:
按键按下,灯会闪烁一次
Supports three interrupt types:
Software Generated Interrupt (SGI)
Private Peripheral Interrupt (PPI)
Shared Peripheral Interrupt (SPI)
key2产生的中断到达cpu核要经过以下三级控制:
1. 外设控制器(GPIO控制器)
2. 中断控制器(GIC)
3. CPU核
SPI号 中断号 中断源
25 57 – EINT[9]
一、看原理图
发现KEY2接在CPU上的GPX1_1引脚上(配置引脚的功能,作为中断功能)
分析发现key2从按下到抬起对应的引脚一共经历了4个状态(设置中断触发方式)
二、看芯片手册
1. 在外设控制器上使能KEY2中断
GPX1CON //引脚的功能配置寄存器
GPX1CON[1] [7:4]:0xF = WAKEUP_INT1[1] //中断功能、
EXT_INT41CON //设置中断的触发方式
EXT_INT41_CON[1] [6:4]: 0x2 = Triggers Falling edge //下降沿触发中断
EXT_INT41_MASK //GPIO控制器上的使能开关
EXT_INT41_MASK[1] [1]: 0x0 = Enables Interrupt //使能KEY2(GPX1_1)
EXT_INT41_PEND //清中断
EXT_INT41_PEND[1] [1]: 写1清中断
ICDISER1 //GIC中,每个中断的小开关,一个位对应一个中断
Set-enable bits [25]: 1 enable
ICDIPTR14
CPU targets, byte offset 1 [15:8]:0x1 //将57号中断分发给CPU0来处理
ICDDCR //全局使能,让所有中断都能到达CPU接口
Enable [0]: 1 enable
ICCICR_CPU0 //全局使能,让所有到达CPU接口的中断都能通过CPU接口到达所连接的处理器
Enable [0]: 1 = Enables signaling of interrupts
ICCPMR_CPU0 //设置中断优先级门限
Priority [7:0]: 一共256个优先级,值越大优先级越低 0xff(门限最低,所有中断都能通过)
ICCIAR_CPU0 //当中断发生了之后,我们可以通过读取这个寄存器获取所发生的中断对应的中断号
ACKINTID [9:0]: The interrupt ID //中断号
ICCEOIR_CPU0 //当中断处理完成之后,将读取到的中断号写回到这个寄存器,表示cpu对这个中断已经处理完成,可以处理下一个中断
EOIINTID [9:0]: The ACKINTID value from the corresponding ICCIAR access.
ICDICPR1 //在GIC的层次上进行清中断操作
Clear-pending bits [25]: 写1清中断
相关文章推荐
- 【iCore3 双核心板】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore4 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯
- 简单外中断实验(最近又要搞arm相关的东西,复习一下中断)
- Linux独立中断栈学习笔记及验证实验(ARM、x86)
- 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
- 【iCore3 双核心板_FPGA】实验十五:基于USART的ARM与FPGA通信实验
- 【连载】【FPGA黑金开发板】NIOS II那些事儿--外部中断实验(五)
- 三星S5PV210(ARM-Cortex A8)中断过程图解
- ARM9 2410移植之ARM中断原理, 中断嵌套的误区,中断号的怎么来的
- ARM之按键中断
- arm的中断体系结构
- ARM中断处理流程的分析
- ARM核只认两种中断信号?
- 异常和中断处理 ARM系统开发者指南 Chapter9-1
- 实验7 PWM 控制蜂鸣器实验
- 【实验六】定时器中断实验
- ARM学习之中断体系结构
- ARM中断分析之四:WinCE的OAL层的中断分析
- .net micro framework的入门例程-点灯神话-3.按键中断控制LED