深入理解ARM体系架构(S3C6410)---PWM实例
S3C6410X中有5个定时器,这些定时器产生内部中断。其中,Timer0和Timer1具有PWM功能,而Timer2,3,4没有此功能。
The S3C6410X RISC microprocessorcomprises of five 32-bit timers. These timers are used to generate internal interruptsto the ARM subsystem. In addition, Timers 0 and 1 include a PWM function (PulseWidth Modulation),which can drive an external I/O signal. The PWM for timer 0and 1 have an optional dead-zone generator capability, which can be utilized tosupport a large current device. Timer 2, 3 and 4 are internal timers with no outputpins.
PWM具有两种操作模式:自动装载模式,一次触发模式。为实现PWM功能,芯片提供了16个功能寄存器。这些功能寄存器都连接APB总线。
总体架构图如下:
S3C6410X中有5个定时器,这些定时器产生内部中断。其中,Timer0和Timer1具有PWM功能,而Timer2,3,4没有此功能。定时器具有双缓冲特性,这样就能在不停止当前定时器操作的情况下,为下次定时器运行装入新的数值。尽管为定时器设置了新数值,但当前的定时操作能够成功完成。定时器从TCNTBn读取的值是为下次延时定时用的,并不影响当前定时器的运行。当TCNTn减小到0的时候,TCNTBn的值会自动复制到TCNTn中,这就是说的自动装载操作。定时器的当前技术数值可以从定时计数观察寄存器中TCNTOn读取。如果TCNTn为0且从装载也为0的话则TCNTn不在进行下次操作。
寄存器介绍:
1、总寄存器映射图
2、TCFG0寄存器:
3、TCFG1寄存器:
4、TCON控制寄存器:
mini6410蜂鸣器原理图:
定义寄存器:
- /* PWM Timer */
- #define rTCFG0 (*(volatile unsigned *)(0x7F006000))
- #define rTCFG1 (*(volatile unsigned *)(0x7F006004))
- #define rTCON (*(volatile unsigned *)(0x7F006008))
- #define rTCNTB0 (*(volatile unsigned *)(0x7F00600C))
- #define rTCMPB0 (*(volatile unsigned *)(0x7F006010))
- #define rTCNTO0 (*(volatile unsigned *)(0x7F006014))
- #define rTCNTB1 (*(volatile unsigned *)(0x7F006018))
- #define rTCMPB1 (*(volatile unsigned *)(0x7F00601c))
- #define rTCNTO1 (*(volatile unsigned *)(0x7F006020))
- #define rTCNTB2 (*(volatile unsigned *)(0x7F006024))
- #define rTCNTO2 (*(volatile unsigned *)(0x7F00602c))
- #define rTCNTB3 (*(volatile unsigned *)(0x7F006030))
- #define rTCNTO3 (*(volatile unsigned *)(0x7F006038))
- #define rTCNTB4 (*(volatile unsigned *)(0x7F00603c))
- #define rTCNTO4 (*(volatile unsigned *)(0x7F006040))
- #define rTINT_CSTAT (*(volatile unsigned *)(0x7F006044))
编写初始化函数:
- void init_pwm()
- {
- rGPFCON &= ~(0x3U << 28);
- rGPFCON |= (0x2U << 28);
- rTCFG0 &= ~0xff;
- rTCFG0 |= (50 - 1);
- rTCFG1 = 0x4;
- #define freq 800
- rTCNTB0 = (133000000/50/16)/freq;
- rTCMPB0 = rTCNTB0/2;
- rTCON &= ~0x1f;
- rTCON |= 0xb; //disable deadzone, auto-reload, inv-off, update TCNTB0&TCMPB0, start timer 0
- rTCON &= ~2; //clear manual update bit
- }
在main函数中:
- init_pwm();
- while(1);
深入理解ARM体系架构(S3C6410)---PWM实例相关推荐
- 深入理解ARM体系架构(S3C6410)---认识S3C6410
芯片架构如图 S3C64xx系列的应用处理器芯片是三星主推的16/32 RISC 微处理器,三星目前推出了S3C6400和S3C6410,都是基于ARM11架构的,而且硬件管脚兼容,应该说大致的功能基 ...
- 深入理解ARM体系架构(S3C6410)---arm7,arm9,arm11区别
本系列文章由muge0913编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7350789 1. 时钟频率的提高 虽然内核架构相同,但 ...
- 深入理解ARM体系架构(S3C6410)---lcd 显示图片
本系列文章由张同浩编写,转载请注明出处:http://blog.csdn.net/muge0913/article/details/7437153 邮箱:muge0913@sina.com S3C64 ...
- ARM体系架构—ARMv7-A指令集:内存操作指令
ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 一.ARMv7-A内存操作指令 二.单寄存器寻址内存操作指令 三.多寄存器寻址内存操作指令 四.SWP,SWPB 一.ARMv7-A指令 ...
- 硬件安全之ARM体系架构的演进
安全从业者脑中有一系列的安全名词,比如安全三要素Confidenciality .Integrity.Availability,比如硬件安全品牌TPM.TrustZone.SGX.Titan-M,比如 ...
- ARM体系架构—ARMv7-A指令集:协处理器指令
ARM体系架构-ARMv7-A指令集 一.ARMv7-A指令集 二.ARMv7-A协处理器 二.ARMv7-A协处理器指令 三.读懂Linux Kernel协处理器指令 一.ARMv7-A指令集 AR ...
- 单片机ARM体系架构知识你知道多少?
想学习单片机的同学可以关注.私信我或者在评论区回复我要入门.在嵌入式领域中ARM可谓一家独大,所以我们要学习嵌入式开发,一定要了解ARM体系,只有在了解ARM体系的基础上才能理解ARM汇编(GNU汇编 ...
- Hadoop:HDFS的概念理解和体系架构-成都加米谷大数据分享
HDFS是什么? HDFS 全称 Hadoop Distributed File System ,简称HDFS,是一个分布式文件系统.它是谷歌的GFS提出之后出现的另外一种文件系统.它有一定高度的容错 ...
- ARM体系结构与编程(篇二):ARM体系架构与寄存器介绍
文章目录 前言 一.ARM内核与架构 1.1 ARM芯片的组成 1.2 ARM指令集与架构 二.ARM处理器模式与寄存器 2.1 ARM处理器模式 2.2 ARM寄存器 前言 该文章是通过学习< ...
最新文章
- mfc cef cefsettings 单进程 退出_PyTorch 64.进程池Pool的imap方法
- 这样保养让你皮肤变水嫩 - 健康程序员,至尚生活!
- 怎样在python代码中输入π_鼠标自动点击、键盘自动输入?几行Python代码搞定
- windows下安装mysql教程
- 再谈初学者关心的ssh应用方方面面
- 使用JDBC增删改查
- 廖雪峰Python学习
- 大数据技术原理与应用----大数据概述
- 分享一个VS2010插件 GBackupSolution Add-in for Visual Studio 2008/2010
- 详谈AI芯片架构、分类和关键技术
- 虚拟服务器欠费是什么原因,辟谣:Elysium解释近期服务器崩溃的原因 非服务器欠费 而是闪电...
- 今年过年不送礼,送礼就送......
- Java中split的用法
- Linux红帽8.2系统中引导过程及引导修复
- BPF-JIT中bug归类
- 武汉大学计算机学院李明,第一届CSIG全国SLAM技术论坛成功举办
- 关于Twitter Card的一个巨坑
- 【软件】[Qt\C++] 冒泡、希尔、堆排、基数、快排 5种排序Gui界面带对比——使用Qt实现
- 手持振弦传感器VH03读数仪测读仪频率仪地质灾害土木工程自动化监测
- 项目经理是如何做到每月“0”电话费的
热门文章
- java守护线程与用户线程_详解Java线程-守护线程与用户线程
- pytorch搭建TextRNN与使用案例
- python使用正则化预处理数据
- mysql上一条语句成功_mysql : 获取上一条insert语句
- python初学者经验总结_Python 初学者的经验总结
- 定期存款可以提前取出来吗_定期存款、约定转存、自动转存和自己取出来转存有什么不同?...
- 清除mysql数据碎片_MySQL 清除表空间碎片方法总结
- PySide: 信号、槽
- python简说(十八)导入模块
- eclipse Jsp 自创建tags问题