打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于外设中寄存器的地址
楼主 发表于: 2010-08-04 22:17:14
小弟刚开始写驱动,一直对外设的寄存器地址比较糊涂。一个外设一般都是通过总线来访问(这句话应该对吧),对外设的操作就是操作它的寄存器,手册上给出了各个寄存器的地址,关于这个地址很不明白,究竟是个什么地址,是要映射到内存空间的吗?我觉得一般一个外设都会映射到内存的一个区域。大侠给详细解释下,小弟真是啥都不懂?

另外,关于微控制器的GPIO口,比如由某个寄存器XXX来控制一组GPIO口,看到驱动中将这个XXX寄存器define为一个地址,微控制器的寄存器也有地址?

这些地址与内存中的地址又有什么联系呢?还是没有任何关系呢?

这个问题困扰了小弟好几年!!
回复次数:3
#1 得分:20 回复于: 2010-08-05 00:12:42
应该说是CPU通过总线来访问外设,总线分三种:控制总线,数据总线,地址总线,具体的可以去看有关微机原理的书。

外设的寄存器地址和内存的地址都是地址,只是在地址上的数据有不同而已

打个最浅显的比方:假如外设地址总线是一根水管,那么外设就像依次接挂在水管上的水龙头,水管里的水就是CPU和外设传输的数据
#2 得分:20 回复于: 2010-08-05 14:53:09
呵呵,我深切体会LZ的感受,2楼的解释一点都不浅显,LZ估计还是很困惑。

地址,寄存器,数据,外设。

假设有一段地址A0~A9,
A0~A3地址段是MCU控制寄存器
      A0:设置1 REST; 设置0 Undo(对芯片自己的操作:复位)
     A1:(GPIO)设置1 On;设置0 Off
   (假如对应的GPIO口连到一个开关设备上,此操作就是开关这个设备)
      对这些地址的访问或操作,就是在控制芯片自己或外设
      
A4~A9地址段是存储区
      MCU运行过程中要用到的数据都放到这里来,
      对这些地址的访问,就是访问数据存储、清除、复制等

所以,不同MCU不同的型号,他们的寄存器地址和内容都不一样,
嵌入式程序不能通用的道理就在这里,它的硬件决定了的。
#3 得分:0 回复于: 2010-08-05 15:33:58
关键的问题是这些地址可能与内存中某个地址是重复的。这点我很不理解。如果映射到内存的话是不应该有重复的。比如网卡映射到0x1fff ~0x2fff,对这段内存的读写应该就是对网卡的读写。。但是 这个寄存器地址很明显有跟内存地址重复了。。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
野火STM32 ADC(DMA模式)实验 详细分析
可跨开发环境的定义寄存器方法
SX1278与STM8L的精美结合。
ESP32 DEVKILTv1(devkitv1)开发板全解析!!!(搭载芯片为ESP32D0WDQ6)
STM32笔记:什么是寄存器
stm32标准库对寄存器地址的封装
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服