2017-01-23 36 views
2

我使用STM32系列微控制器,更具体地说是STM32F7系列。目前我正在研究通用定时器的使用。

STMicro错误地解释了“影子寄存器”这个术语吗?

关于双缓冲寄存器。

微控制器有时使用双缓冲寄存器。这样,软件就可以写入和读取寄存器而不会造成麻烦。下图说明:

   buffered register:   active register: 
       --------------    -------------- 
       | REGX_BUF | <-------> | REGX  | 
       --------------    -------------- 
         |       | 
         |       | 
        SOFTWARE     HARDWARE 

     The software interacts  Updates to and from the 
     only with the buffered  active register take place 
     register.      at specific moments (when it 
             is 'safe'). 

     synonyms:      synonyms: 
      - buffered register   - active register 
      - preload register 
      - shadow register (?) 

有几个方面从上图中两个REGX_BUFREGX

  • 通常寄存器REGX被称为“活动寄存器”。
  • 寄存器REGX_BUF有时称为“缓冲寄存器”。其他条款是“预加载寄存器”和“影子寄存器(?)”。

混淆说明。

不幸的是,关于术语“影子寄存器”有一个混淆。从我在互联网上看到的几个资料来看,它指的是REGX_BUF。但是在STM32F746微控制器的参考手册RM0385和STM32F767微控制器的RM0410中,我偶然发现了这个术语“影子寄存器”的完全相反的解释。它不会参考REGX_BUF,而是参考REGX
这是从参考手册的图片:

RM0385 -> chapter 23 General-purpose timers -> 23.3.2 Counter modes -> Fig 199 

RM0410 -> Chapter 26 General-purpose timers -> 26.3.2 Counter modes -> Fig 244 

enter image description here

该图混淆了我。我是否对“影子寄存器”这个术语有错误的解释,或者意法半导体在撰写本参考手册时是否犯了错误?

+0

到底是什么问题? “X的影子寄存器”指的是一个“遮蔽”或复制“X”值的寄存器。这张图正好显示了影子寄存器跟随“自动预加载”的值,并且有一点时间延迟。 –

+0

从我在几个源中读到的内容来看,“影子寄存器”是“预加载寄存器”的同义词:this是与软件交互的注册表。 --- “活动寄存器”是与硬件交互的一个。 来自STMicro手册的图解释术语“影子寄存器”不是“预加载寄存器”的同义词,而是“有效寄存器”的同义词。所以我感到困惑。 –

+0

http://electronics.stackexchange.com/questions/86032/what-actually-is-a-shadow-register –

回答

4

问题在于术语“影子寄存器”没有特定的与架构无关的含义。

例如,ARM架构具有一组通用寄存器,您可以在其中写入和读取(R0 - R12)。但是,如果您输入中断处理程序上下文R8 - R12切换到“影子寄存器”。这意味着你仍然像在普通程序中那样处理它们,但是你正在访问完全不同于通常程序中使用的R8 - R12的寄存器。它们是专用的中断处理资源,因此您不必像通常那样处理保存和恢复寄存器。

一些PIC微控制器允许您为引脚I/O写入和读取相同的地址,但事实上,您正在写一个单独的缓冲区,而不是读取,因为写入引脚可能不一定会改变他们的状态立即。这种配置允许体系结构缓存写请求,同时等待它改变引脚状态。这些额外的缓冲区有时也被称为影子寄存器,并且与您的示例类似。使用您的示例中给出的术语,我想这将被称为“预加载寄存器”。

一般来说,该术语用于表示可以用同样方法解决的多个硬件资源。哪一个是“真正的”寄存器,哪个是“影子”寄存器,在架构和供应商之间并不一致,最终可能也不是很重要。

+0

非常感谢。这个答案澄清了这个问题:-) –

2

实际上ST定义其标准:(第通用T食谱 14)

  • 活性寄存器实例(也称为影子寄存器实例):其内容是由定时器外围逻辑使用 生成定时器通道输出波形。
  • 预加载寄存器实例:这是当相关寄存器的预加载特性被使能时由软件 访问的寄存器实例。

原稿是ST AN4776应用笔记 - ,可以发现here

+0

非常感谢 –