文档库 最新最全的文档下载
当前位置:文档库 › 编程注意事项和寄存器介绍

编程注意事项和寄存器介绍

编程注意事项和寄存器介绍
编程注意事项和寄存器介绍

关于这篇翻译的几点申明

1.翻译参与人员是成都信息工程学院的王堃邓练王继承。

2.由于能力和时间有限,只翻译了自己觉得对我们这次培训有用的

部分。其它部分希望有兴趣的人自己查阅PDF.

3.这个翻译是基于AD公司的AD9954的PDF的,翻译了部分页

数的部分内容。有部分内容由于在一个“AD9954中文“的PDF 上有了说明,我们就没有再翻译,有需要可以联系我们。

4.这篇文章是翻译来我们自己查阅用的,如果你在使用这个文档的

所产生的问题责任由你自己负责,所有错误都是因为你不自己看PDF!!:-)

5.不需要感谢,只需要大家在传阅这篇翻译的时候不要删除这几点

申明。

6.有任何问题可以联系我们QQ: 王堃4164162邓练

16519653 王继承405117024

7.时间:2007-8-11

8.地点:成都信息工程学院高频培训实验室

几个核心词汇的解释:(PDF13,14页)

参考频率:REFCLK Input

AD9954有几种生成内部系统时钟的方式,片上的振荡环路可以通过外部的时钟输入引脚链接的晶振产生一个低频参考信号。系统时钟可以通过内部的一个锁相倍频使低频的输入信号生成一个低频信号源的供给系统高采集率的DDS和DAC使用。为了得到最好的效果,外部晶振

要尽量稳定,无噪声。

通过对CLKMODESELECT引脚,CFR1<4>和CFR2<7:3>的设置可以设定系统的时钟工作模式,需要注意这些引脚只支持1.8v的逻辑电压,不支持3.3v的逻辑电压。CLKMODESELECT引脚为高的的时候,激活了内部震荡回路,通过外部晶振输入的频率,系统产生一个缓冲过的信号。

当内部时钟被禁用时,外部晶振必须提供一个参考频率,对于不同的操作,如果是单端输入参考频率的话,应该在不用的引脚和模拟VCC之间连接一个0.1uf的电容。有了这个电容,时钟输入引脚的偏斜电压(bias voltage )会是1.35V.5号框图是对时钟工作模式设置的总结。注意对锁相环的倍频是通过CFR2<7:3>这几个位进行设置的,

和CFR1<4>是相互独立的。

倍频器:

片上的锁相环电路可以参考频率进行倍频。通过对CFR2<7:3>.这几个控制位,可以设置倍频率。倍频值是在0x04 到 0x14 之间(4——20倍)。编程时使用者应该考虑倍频器的最大输入频率,在倍频比修改后,必须有一段时间的延时让锁相环去锁定。(大概1ms)The PLL is bypassed by programming a value outside the range of 4 to 20 (decimal). When bypassed, the PLL is shut down to conserve power. (这一段不理解,大家自己查阅吧)。

压控振荡器VCO可以通过对(CFR2<2>)位的设置进行精确范围的

设置。

环路滤波器(loop filter)链接的电容和电阻的推荐取值在框

图4上。

DAC 输出

和大多数的DAC不一样的是,AD9954的参考点是AVDD,而不是AGND。两个双向输出端提供一个最大值输出电流,微分输出可以减少DAC输出产生的共态噪声,从而有更好的信噪比。最大电流是由外部

DAC_R

SET 引脚和 DAC ground 引脚直接链接的电阻R

SET

决定的,计算方

程如下。

R

SET

=(39.19/Iout)

最大输出电流是15MA.限制到10ma以下有更好的spurious-free dynamic range (SFDR)效果。

DAC输出-5.0v到+5.0v之间。超出这个范围会产生过载以至于烧毁DAC输出电路.要注意输出电压不要超出这个范围。

比较器:

许多应用都是方波而不是正弦波,该芯片为了支持这种应用,自身带有片上比较器,片上比较器特点为带宽大于200M,电压输入范围为1.3到1.8,比较器可通过使用控制字——CFR1<6>进行关闭,目的是降低电源功耗

频率累加器:

该板块采用线性扫频模式,从开始频率(F0) 转变到终点的频率(F1) 不是即时的,而是以扫频或者跳变的方式进行转变。跳变模式可通过步进在F0-F1中间任意频率完成,线性扫频板块是用上升或者下降三角频率改变控制字和上升下降三角频率的斜率以及频率累

加器实现。通过CFR!<21>使能线性扫频模块,线性扫描没有固定某个位去建立某一方式,用以在扫描过程中达到终点频率。

频率控制字:

参照图2,

三个不同的资源组成频率控制字,为dds核心提供相位累加器的累加值:频率累加器,静态RAM,和控制逻辑寄存器。实际应用中静态的输出频率或超过四被预置输出频率需要被转变,在一些在变或不明确的次序中,设定FTW 的首选方法是设定FTW0 寄存器的值。

如果应用中需要预置超过四个特殊程序控制字或者需要写一个预置控制字序列,可以将FTW写到片上RAM上,通过管脚的设置可以在一套或者一系列之间进行切换。(PS0,PS1)

应用中如果需要一个稳定的扫频,就需要设置第二频率计数器。尽管累加器的值是使用者编程得到的,但是程序中一定要制定写些规则来避免溢出

DDS核

DDS的输出频率Fo是通过一个方程计算出来的,方程涉及系统时钟(SYSCLK), 频率设置字(FTW), 和相位累加器的容量 (232, 这个芯片).方程如下

f O = (FTW)(f

S

)/232;0 ≤FTW ≤ 231

f O = f

S

× (1 ? (FTW/232)) ;231 < FTW < 232 ? 1

注意根据FTW的取值不同,方程是不一样的。

在每个时钟周期,FTW被写入到相位计数器中(有点像单片机的

自动计数模式—本人自己的想法)。相位累加器的输出值和用户自己预先定义的14位相位设置字(POW)相加.这个19位的数值会通过一个

余弦COS功能转化成一个幅度值(amplitude value)。消除掉较低的几位可以有效的减低功耗。这个消除不会降低频率分辨率。

在某些应用中,可能需要产生一个0相位的输出信号,单纯的把FTW设置为0不能完成这个要求。必须把DDS核的输出相位值进行设置,有一个控制位是专门用来让相位计数器输出0相位的。

上电后,相位累加器清除位自动为1.但是这一位相对的缓冲存储器是0.所以,在上电之后,相位累加器在第一次I/O 更新之前是零。I/O更新把数据从数据缓存传输到数据寄存器。查阅SYNC_CLK and I/O UPDATE 部分了解细节。

同步-寄存器更新SYNCHRONIZATION—REGISTER UPDATES (I/O UPDATE)

输入到AD9954的数据通过SYNC_CLK 信号实现同步。I/O更新是在SYNC_CLK的上升沿进行的。

系统内部,SYNC_CLK信号通过一个四分频器转换成SYNC_CLK信号. SYNC_CLK信号在SYNC_CLK引脚上有输出。这样使得外部硬件和系统通过系统内部的时钟同步。

I/O更新信号和SYNC_CLK信号,是用作把内部缓存里面的数据发

送到控制寄存器里。他们可以保证使用者在修改数据字的时候是在一个稳定的连续的脉冲条件下。(保证时序的正确)

23号图和24号图对同步,I/O更新通讯时序进行了描述。

这些时序中需要注意的是以下几个方面:

1)、i/o 更新信号是边沿检测信号,这个信号没有对时间长度的约束,但是最小的低电平周期是一个SYNC_CLK 时钟周期。

2)、I/O UPDATE引脚在SYNC_CLK 的上升沿置高和保持。设置和保持规范查阅TABLE 2.

从PDf24页左下开始:

操作实例:(example operation)

作为一个示例,给幅度比例因子(ASF)寄存器写一个最大值一半的刻度值。首先计算出0.5对应的二进制数值。因为ASF是16位宽的数据,所以等效的的数值应该是0x80。然后,如果是高位在前模式(MSB),发出一个指令字节0x02(ASF的内存地址是00010b),通过这个指令,内部控制器选择对应的内存地址的寄存器,然后发现ASF是2byte宽,串口计数器设置为16(应该是自动的),然后开始等待SCLK的16个上升沿,然后依次从SDIO读取10000000 00000000.

在低位在前的模式(LSB)下修改ASF寄存器的值基本上和MSB 模式下一样,不过数据是相反的。00000000 00000001.

RAM串口操作

通过串口操作的方法是和其他串口通讯基本上一致的,但是读取的8位单元(byte)的数量是通过内存地址的开始地址到截至地址之间的长度定义的。内存段控制字(RSCW)。结束地址是I/O传输的最高位,开始内存地址是I/O传输的最低位。(所以这里要考虑你的

传输模式是MSB,还是LSB,根据情况修改传输数据的时序。)通过设置CFRI《8》,RAM I/O支持LSB和MSB这两种模式。MSB模式时第一个字节(byte 8位)是整个内存地址的最高位,接下来的三个字是依次组合成接下来的3个字节(byte8位)是对较低的三个字节依次进行设置。LSB模式刚好相反。(PDF对这里描述比较烦琐而且重复,就没有继续翻译了,有疑问的可以自己查阅PDF或者联系我们。)

串口操作注意事项

?设置的改变在对CFR1<9:8>这个寄存器写值之后就马上实现

了。如果是多字节的写指令,对这两个寄存器位写指令应该是

在整个通信周期的中间。(所以应该对剩下的字节改变量后进

行依次重新书写CFR1,以保证整个修改全部刷新---括号里面

是我自己的理解,希望大家有选择的读取)。

?系统必须保证时钟同步以保证AD9954可以识别每个外部逻

辑控制字。比如,如果系统发送一个指令字节去修改一个

2-byte(16位)的寄存器,但是对SCLK产生了3个字节(24

次)的脉冲,即产生了多余的24个脉冲,那么通讯同步就丢

失了。这种情况下,最开始的16个SCLK上升沿里面读取的

数据被存储进了你所选择的寄存器,但是后面的八个上升沿则

会被AD9954理解为下一个指令字节。为了防止AD9954和系

统之间的不同步,IOSYNC这个引脚可以对AD9954的串口状

态控制器进行重启。

如果要对RAM profile进行读取那么必须操作PROFILE控制引脚(PS1和PS0)。通过对PS1和PS0的设置可以片选你所

需要的RAM寄存器。然后进行读取。

指令字节

指令字节包括以下信息:

Msb D6 D5 D4 D3 D2 D1 LSB

R/w x x a4 a3 a2 a1 a0

这里是一个草图,具体请查阅PDF.

R/W :这一位是控制是对内存地址的写操作还是对内存地址的读操作的。

R就是读,w就是写1:读0 :写

X,x:d6,d5这两位可以不用关心。

a4 a3 a2 a1 a0:这里是对所要操作的内存地址进行设置。

每个存储器所对应的内存地址请在内存框图上查找。(参考PDF 表12,13)

内存地址框图及介绍

图12和13是内存地址的框图。可用的内存地址是由linear sweep enable bit位决定的。

有些寄存器的内存地址可能会由于操作模式的不同有所改变。特别的是:0x07,0x08,0x09,0x0a这几个寄存器会受到影响。因为linear sweep operation (直译直线扫描操作)的优先级高于RAM操作。AD 公司建议在linear sweep被使能的情况下,通过bitCFR1<31>把RAM

操作禁止。通过对CFR1<21> 的设置去保证电源(conserve power).串口地址数与每个寄存器关联,”<>”这个符号描述了特殊位和位的范围。比如:<3>指的是第三位(bit 3),<7:3>指的是这个范围是bit7到bit3之间。

CFR1<21> 直线扫描和RAM操作控制位。

0 : RAM 操作模式。

1 :直线扫描操作模式。

寄存器控制位描述

接下来是图12.13 请参考PDF 这里就不再列出。

寄存器控制功能NO.1

CFR1被用来控制多种功能,并且控制AD9954的模式。每位的功能。CFR1<31>:RAM使能位

CFR1<31>=0(默认):RAM不能被操作。单音操作模式或者直线扫描模式被允许。

CFR1<31>=1:RAM允许被操作。正常存取控制操作被RSCW模式控

制位控制为了电流分布。

CFR1<31>: RAM Enable Bit

CFR1<31> = 0 (default). The RAM is disabled for operation. Either single-tone mode of operation or linear sweep mode of operation is enabled.

CFR1<31> = 1. The RAM is enabled for operation. Access control for normal operation is controlled

CFR1<30>:RAM目标位

如果CRF<31>被清空,CRF<30>被忽略。

CFR1<30>=0(默认):如果CFR1<31>被设置,RAM输出驱动相位累加器(提供FTW)。

CFR1<30>=1。如果CFR1<31>被设置,RAM输出驱动相位加法器(POW)。CFR1<30>: RAM Destination Bit

If CFR1<31> is cleared, CFR1<30> is ignored.

CFR1<30> = 0 (default). If CFR1<31> is set, the RAM output drives the phase accumulator (provides the FTW).

CFR1<30> = 1. If CFR1<31> is set, the RAM output drives the phase-offset adder (POW).

CFR1<29:27>:内部板型控制

这些位引起板型位被忽略,当RAM被使用并且使AD9954进入自动板型循环序列,这个序列允许使用者执行频率/相位的合成扫描,扫描不需要外部输入。参看内部板型控制段的更多资料。

CFR1<29:27>: Internal Profile Control Bits

These bits cause the profile bits to be ignored when the RAM is being used and puts the AD9954 into an automatic profile loop sequence that allows the user to implement a frequency/phase composite sweep that runs without external inputs. See the Internal Profile Control section for more details.

CFR1<26>:装入在振幅斜坡速率控制位

CFR1<26> = 0(默认)。振幅斜坡速率定时器被装载只有在超时上(时钟==1);它不被装由于IO更新输入信号。

CFR1<26> =1。振幅斜坡速率定时器被装载时钟上升延时(时钟==1),或者在IO更新输入信号的时候。

CFR1<26>: Load Amplitude Ramp Rate Control Bit

CFR1<26> = 0 (default). The amplitude ramp rate timer is loaded only upon timeout (timer == 1); it is not loaded due to an I/O update input signal.

CFR1<26> = 1. The amplitude ramp rate timer is loaded upon either timeout (timer == 1) or at the time of an I/O update input signal.

CFR1<25>: Shaped On-Off Keying 使能位

CFR1<25>=0(默认)。Shaped on-off keying 被旁路。

CFR1<25>=1. Shaped on-off keying 被允许。参阅CFR<24>。

CFR1<25>: Shaped On-Off Keying Enable Bit

CFR1<25> = 0 (default). Shaped on-off keying is bypassed. CFR1<25> = 1. Shaped on-off keying is enabled. See also CFR1<24>.

CFR1<24>:自动shaped On-off使能位

如果CFR<25>被清零,CFR<24>被忽略。

CFR<24>=0(默认)。手动Manual shaped on-off keying 操作,参看Shaped On-off Keying 部分详细资料。

CFR1<24>: Autoshaped On-Off Keying Enable Bit

If CFR1<25> is cleared, CFR1<24> is ignored.

CFR1<24> = 0 (default). Manual shaped on-off keying operation. See the Shaped On-Off Keying section for details.

CFR1<24> = 1. Autoshaped on-off keying operation. See the Shaped On-Off Keying section for details.

CFR1<23>:自动同步使能位

CFR<24>=0(默认)。多个的AD9954自动同步特征不被激活。

CFR<24>=1。多个的AD9954自动同步特征被激活。参看多个AD9954同步部分细节。

CFR1<23>: Automatic Synchronization Enable Bit

CFR1<23> = 0 (default). The automatic synchronization feature of multiple AD9954s is inactive.

CFR1<23> = 1. The automatic synchronization feature of multiple AD9954s is active. See the Synchronizing Multiple AD9954s section for details.

CFR1<22>:多个AD9954软件手动同步

CFR1<22>=0(默认)。手动同步特征不被激活。

CFR1<22>=1。软件控制的手动同步特征被激活。SYNC_CLK上升沿被SYNC_CLK周期提前,并且这位被自动清零。为了提前上升沿若干倍,这个位需要被设置一次在在每个提前时。

CFR1<22>: Software Manual Synchronization of Multiple AD9954s

CFR1<22> = 0 (default). The manual synchronization feature is inactive.

CFR1<22> = 1. The software-controlled manual synchronization feature is executed. The SYNC_CLK rising edge is advanced by one SYNC_CLK cycle, and this bit is autocleared. To advance the rising edge multiple times, this bit needs to be set once for each advance.

CFR1<21>:线性频率扫描使能

CFR1<21>=0(默认)。AD9954的线性频率扫描能力不被激活。

CFR1<21>=1。AD9954的线性频率扫描能力被激活。参看线性扫描部分详细内容。

CFR1<21>: Linear Frequency Sweep Enable

CFR1<21> = 0 (default). The linear frequency sweep capability of the AD9954 is inactive.

CFR1<21> = 1. The linear frequency sweep capability of the AD9954 is enabled. See the Linear Sweep Mode section for details.

CFR1<20:16>:不被使用,待清零

CFR1<20:16>: Not Used, Leave Clear

CFR1<15>:

CFR1<15>=0(默认)。直线扫描斜率被装载仅在超时上(时钟=1)时;它不被装载由于IO更新输入信号。

CFR1<15>=1。直线扫描斜率被装载在超时上(时钟=1)时,或者在IO 更新输入信号的时。

CFR1<15>: Linear Sweep Ramp Rate Load Control Bit

CFR1<15> = 0 (default). The linear sweep ramp rate timer is loaded only upon timeout (timer == 1); it is not loaded due to an I/O update input signal.

CFR1<15> = 1. The linear sweep ramp rate timer is loaded either upon timeout (timer == 1) or at the time of an I/O update input signal

CFR1<14>:自动清除频率累加器位

CFR1<14>=0(默认)。当前频率累加器状态不被IO接受到的更新信号影响。

CFR1<14>=1。频率累加器被自动地或者同步地腾出一个周期接受一个IO口更新信号。

CFR1<14>: Autoclear Frequency Accumulator Bit

CFR1<14> = 0 (default). The current state of the frequency accumulator is not impacted by receipt of an I/O update signal. CFR1<14> = 1. The frequency accumulator is automatically and synchronously cleared for one cycle upon receipt of an I/O UPDATE signal

CFR1<13>:自动清零相位累加器位

CFR1<13>=0(默认)。当前相位累加器状态不被IO接受到的更新信号

影响。

CFR1<13> = 1. 相位累加器被自动地或者同步地腾出一个周期接受一个IO口更新信号。

CFR1<13>: Autoclear Phase Accumulator Bit

CFR1<13> = 0 (default). The current state of the phase accumulator is not impacted by receipt of an I/O update signal. CFR1<13> = 1. The phase accumulator is automatically and synchronously cleared for one cycle upon receipt of an I/O update signal.

CFR1<12>:正弦/余弦选择位

CFR1<12> = 0(默认)。角度-振幅逻辑转换使用余弦函数。

CFR1<12> = 1。角度-振幅逻辑转换使用正弦函数。

CFR1<12>: Sine/Cosine Select Bit

CFR1<12> = 0 (default). The angle-to-amplitude conversion logic employs a cosine function.

CFR1<12> = 1. The angle-to-amplitude conversion logic employs a sine function.

CFR1<11>:清除频率累加器

FR1<11> = 0(默认)。频率累加器启正常功能。

FR1<11> = 1。频率累加器存储元件被清零并且持续清零直到这位本

清零。

CFR1<11>: Clear Frequency Accumulator

CFR1<11> = 0 (default). The frequency accumulator functions as normal.

CFR1<11> = 1. The frequency accumulator memory elements are cleared and held clear until this bit is cleared.

CFR1<10>:清除相位累加器

FR1<10> = 0(默认)。相位累加器启正常功能。

FR1<10> = 1。相位累加器存储元件被清零并且持续清零直到这位本清零。

CFR1<10>: Clear Phase Accumulator

CFR1<10> = 0 (default). The phase accumulator functions as normal.

CFR1<10> = 1. The phase accumulator memory elements are cleared and held clear until this bit is cleared.

CFR1<9>:SDIO 仅输入

CFR1<9> = 0(默认)。SDIO引脚是双向的(2-线按序编写程序模式)。CFR1<9> = 1。SDIO被设置(3-线按序编写程序模式)。

CFR1<9>: SDIO Input Only

CFR1<9> = 0 (default). The SDIO pin is bidirectional (2-wire serial programming mode).

CFR1<9> = 1. The SDIO is configured (3-wire serial programming mode).

CFR1<8>:LSB优先

CFR1<8> = 0(默认)。MSB优先初始化被激活。

CFR1<8> = 1。LSB优先初始化被激活。

CFR1<8>: LSB First

CFR1<8> = 0 (default). MSB first format is active.

CFR1<8> = 1. LSB first format is active.

CFR1<7>:数字低功耗位

CFR1<7> = 0(默认)。所有数字功能和时钟被激活。

CFR1<7> = 1。所有非IO数字功能被暂停,对降低电源有重要意义。CFR1<7>: Digital Power-Down Bit

CFR1<7> = 0 (default). All digital functions and clocks are active.

CFR1<7> = 1. All non-I/O digital functionality is suspended, lowering the power significantly.

CFR1<6>:比较器低功耗位

CFR1<6> = 0(默认)。比较器操作被激活。

CFR1<6> = 1。比较器被禁用并且进入低功耗状态。

CFR1<6>: Comparator Power-Down Bit

CFR1<6> = 0 (default). The comparator is enabled for operation. CFR1<6> = 1. The comparator is disabled and is in its lowest power dissipation state.

CFR1<5>:DAC低功耗位

CFR1<5> = 0(默认)。DAC操作被允许。

CFR1<5> = 1。DAC被禁用并且进入低功耗状态。

CFR1<5>: DAC Power-Down Bit

CFR1<5> = 0 (default). The DAC is enabled for operation. CFR1<5> = 1. The DAC is disabled and is in its lowest power dissipation state.

CFR1<4>:时钟输入低功耗位

CFR1<4> = 0(默认)。时钟输入电路操作被激活。

CFR1<4> = 1。时钟输入电路被禁止并且器件进入低功耗状态。

CFR1<4>: Clock Input Power-Down Bit

CFR1<4> = 0 (default). The clock input circuitry is enabled for operation.

CFR1<4> = 1. The clock input circuitry is disabled and the device is in its lowest power dissipation state.

CFR1<3>:外部低功耗模式

CFR1<3> = 0(默认)。外部地功耗模式选择是快速恢复低功耗模式。在这种模式下,当PWRDWNCTL输入脚为高时,数字逻辑(电路)和DAC 数字逻辑电源关闭。DAC偏置电路,PLL,晶正,和时钟输入电路电源被关闭。CFR<7>决定是否关掉比较器电源。CFR<7>,和CFR<5:4>被忽略。

CFR1<3> = 1。外部低功耗模式被选择是全部进入低功耗模式。在这种模式下,当PWRDWNCTL输入脚为高时,所有功能掉电。这些包括DAC 和PLL,这些需要花费大量的时间加电。CFR1<7:4>全部被忽略。

CFR1<3>: External Power-Down Mode

CFR1<3> = 0 (default). The external power-down mode selected is the rapid recovery power-down mode. In this mode, when the PWRDWNCTL input pin is high, the digital logic and the DAC digital logic are powered down. The DAC bias circuitry, PLL, oscillator, and clock input circuitry are not powered down. CFR1<6> determines whether the comparator is powered down. CFR1<7>, and CFR1<5:4> are ignored.

CFR1<3> = 1. The external power-down mode selected is the full power-down mode. In this mode, when the PWRDWNCTL input pin is high, all functions are powered down. This includes the DAC and PLL, which take a significant amount of time to power up. CFR1<7:4> are all ignored.

CFR1<2>:线性扫描No-Dwell位

如果CFR1<21>被清零,这个位无关紧要(忽略)。

CFR1<21>=0(默认)。线性扫频No-Dwell功能未被激活。如果No-Dwell 功能处于未被激活,当扫描完成,扫描不被启动直到IO更新,或者改变断面,按照先前的描述初始化其他扫频。在扫描时输出频率保持在最后的值。

CFR1<21>=1。线性扫描no-dwell功能被激活。如果No-Dwell模式被激活,当扫描完成时,相位累加器被清零。相位累加器保持清零直到其他扫频初始化经过一个IO更新或者在断面改变

CFR1<2>: Linear Sweep No-Dwell Bit

If CFR1<21> is clear, this bit is a don’t care (ignored). CFR1<2> = 0 (default). The linear sweep no-dwell function is inactive. If the no-dwell mode is inactive when the sweep completes, sweeping does not restart until an I/O update or change in profile initiates another sweep as previously described. The output frequency holds at the final value in the sweep.

CFR1<2> = 1. The linear sweep no-dwell function is active. If the no-dwell mode is active when the sweep completes, the phase accumulator is cleared. The phase accumulator remains cleared until another sweep is initiated via an I/O update input or change in profile.

CFR1<1>: SYNC_CLK 禁止位

CFR1<1> = 0 (默认)。SYNC_CLK被激活。

CFR1<1> =1。SYNC_CLK引脚呈现一个静态逻辑0状态为了减小数字电路产生的噪音。同步电路保持内部激活,为了保留器件标准时间。CFR1<1>: SYNC_CLK Disable Bit

CFR1<1> = 0 (default). The SYNC_CLK pin is active.

CFR1<1> = 1. The SYNC_CLK pin assumes a static Logic 0 state to minimize noise generated by the digital circuitry. The synchronization circuitry remains active internally to

单片机各寄存器汇总

符号 地址功能介绍 B F0H B寄存器 ACC E0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器 P2 A0H P2口锁存器 SBUF 99H 串行口锁存器 SCON 98H 串行口控制寄存器 P1 90H P1口锁存器 TH1 8DH 定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位) TMOD 89H 定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPTR 82H 83H 83H数据地址指针(高8位) PC SP 81H 堆栈指针 P0 80H P0口锁存器 PCON 87H 电源控制寄存器 、PSW-----程序状态字。 D7D6D5D4D3D2D1D0 CY AC F0 RS1 RS0 OV P 下面我们逐一介绍各位的用途 CY:进位标志。 AC:辅助进、借位(高半字节与低半字节间的进、借位)。 F0:用户标志位,由用户(编程人员)决定什么时候用,什么时候不用。 RS1、RS0:工作寄存器组选择位。这个我们已知了。 0V:溢出标志位。运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P :奇偶校验位:它用来表示ALU 运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。 运算结果有奇数个1,P =1;运算结果有偶数个1,P =0。 例:某运算结果是78H (01111000),显然1的个数为偶数,所以P=0。 定时/计数器寄存器 1.工作方式寄存器TMOD(P134) TMOD 为T0.T1的工作方式寄存器,其各位的格式如下:TMOD D7 D6 D 5 D4 D3 D2 D1 D0 GATE C/-T M1 M0 GATE C/-T M1 M0 定时器1 定时器0 位7 GATE ——T1的门控位。 当GATE=0时,只要控制TR1置1,即可启动定时器T1开始工作; 当GATE=1时,除需要将TR1置1外,还要使INT1引脚为高电平,才能启动相应的定时器开始工作。 位6 C/—T ——T1的功能选择位。 当C/—T=0时,T1为定时器方式; 当C/—T=0时,T1为计数器方式; 位5和位4 M1和M0——T1的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T1工作方式选择表 如右表: 位3 GATE ——T0的门控位。 当GATE=0时,只要控制TR0置1,即可启动定时器T0开始工作; 当GATE=1时,除需要将TR0置1外,还要使INT0引脚为高电平,才能启动相应的定时器开始工作。 位2 C/T ——T1的功能选择位。 当C/—T=0时,T0为定时器方式; 当C/—T=0时,T0为计数器方式; 位1和位0 M1和M0—T0的方式选择位。 由这两位的组合可以定义T1的3种工作方式 定时器T0工作方式选择表 TMOD 不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半节定义定时器0,高半字节定义定时器1。复位时,TMOD 所有位均为0,定时器处于停止工作状态。 定时/计数器控制寄存器中断请求标志寄存器TCON(P183) TCON 的作用是控制定时器的启/停,标志定时器的溢出和中断情况。定时器控制寄存器TCON 各位格式如下:TCON(88H) 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 当有中断源发出请求时,有硬件将相应的中断标志位置 1.在中断请求被响应前,相应中断标志位被锁存在特殊功能寄存器TCON 或SCON 中。 TCON 为定时器T0和T1的控制寄存器,同时也锁住T0和T1的溢出中断标志及外部中断——INT0和— M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器1:停止计数 M1 M0 工作方式 功能描述 0 0 方式0 13位计数器 0 1 方式1 16位计数器 1 0 方式 2 自动再装入8位计数器 1 1 方式3 定时器0:分成2个8位计数器

寄存器(register)

寄存器 Scope of register: 寄存器是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。其实寄存器就是一种常用的时序逻辑电路,但这种时序逻辑电路只包含存储电路。寄存器的存储电路是由锁存器或触发器构成的,因为一个锁存器或触发器能存储1位二进制数,所以由N个锁存器或触发器可以构成N位寄存器。寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。 1、寄存器- 特点及原理 寄存器又分为内部寄存器与外部寄存器,所谓内部寄存器,其实也是一些小的存储单元,也能存储数据。但同存储器相比,寄存器又有自己独有的特点: ①寄存器位于CPU内部,数量很少,仅十四个; ②寄存器所能存储的数据不一定是8bit,有一些寄存器可以存储16bit数据,对于386/486处理器中的一些寄存器则能存储32bit数据; ③每个内部寄存器都有一个名字,而没有类似存储器的地址编号。 寄存器的功能十分重要,CPU对存储器中的数据进行处理时,往往先把数据取到内部寄存器中,而后再作处理。外部寄存器是计算机中其它一些部件上用于暂存数据的寄存器,它与CPU之间通过“端口”交换数据,外部寄存器具有寄存器和内存储器双重特点。有些时候我们常把外部寄存器就称为“端口”,这种说法不太严格,但经常这样说。 外部寄存器虽然也用于存放数据,但是它保存的数据具有特殊的用途。某些寄存器中各个位的0、1状态反映了外部设备的工作状态或方式;还有一些寄存器中的各个位可对外部设备进行控制;也有一些端口作为CPU同外部设备交换数据的通路。所以说,端口是CPU和外设间的联系桥梁。CPU对端口(Ports)的访问也是依据端口的“编号”(地址),这一点又和访问存储器一样。不过考虑到机器所联接的外设数量并不多,所以在设计机器的时候仅安排了1024个端口

寄存器简单理解

GPIOB_BASE是一个地址,这个地址是GPIOB一系列寄存器的首地址,后面地址依次是GPIOB 的寄存器,将这个地址转换为结构体形式,并将后面寄存器按顺序定义在结构体里面,这样访问寄存器就可以通过引用结构体的形式了而不必书写寄存器的地址来访问寄存器。 寄存器用途: 1.可将寄存器内的数据执行算术及逻辑运算; 2.存于寄存器内的地址可用来指向内存的某个位置,即寻址; 3.可以用来读写数据到电脑的周边设备。 AX 累加器,得名原因是最初常使用ADD AX,n这样的指令 CX 计数器,得名原因是最常使用CX的值作为重复操作的次数 BX 常用作地址寄存器,如MOV AX,[BX],把BX所指地址中的数取到AX中去 DX 通用寄存器 所讲的寄存器都是以x86为基础的,那么这种CPU内,寄存器可分为以下几种: 1.EAX、EBX、ECX、EDX等通用寄存器——从通用上来讲,它所存储的东西,只要它的容积所容许的话,什么都是可以存储的; 2.CS、SS、ES等段寄存器——它所存储的只能是地址,它的作用是从寻址上可以体现出来; 3.EIP,也称为指令指针 4.EFLAGS寄存器,俗称为标志寄存器——所存储的是与CPU的每一个执行的指令有关。是关系到CPU每一个指令的执行相关内容与特殊的关联,即CPU所执行的指令是否违规,它的指令是否有进位,它的指令是否有溢出,都是在标志寄存器中能表现与表达出来; 5.浮点单元,这里面之所以只浮点单元,是因为在它里面还有一些小的寄存分类,主要是数学上的浮点上的计算 6.MMX指令使用的8个64位寄存器 7.单指令、多数据操作(SIMD,single-instruction,multiple-data)使用的8个128位XMM寄存器

msp430状态寄存器介绍概括

寄存器实在太多了。。我有个文档给你看看吧、、 MSP430寄存器中文注释---P1/2口(带中断功能) /************************************************************ * DIGITAL I/O Port1/2 寄存器定义有中断功能 ************************************************************/ #define P1IN_ 0x0020 /* P1 输入寄存器*/ const sfrb P1IN = P1IN_; #define P1OUT_ 0x0021 /* P1 输出寄存器*/ sfrb P1OUT = P1OUT_; #define P1DIR_ 0x0022 /* P1 方向选择寄存器*/ sfrb P1DIR = P1DIR_; #define P1IFG_ 0x0023 /* P1 中断标志寄存器*/ sfrb P1IFG = P1IFG_; #define P1IES_ 0x0024 /* P1 中断边沿选择寄存器*/ sfrb P1IES = P1IES_; #define P1IE_ 0x0025 /* P1 中断使能寄存器*/ sfrb P1IE = P1IE_; #define P1SEL_ 0x0026 /* P1 功能选择寄存器*/ sfrb P1SEL = P1SEL_; #define P2IN_ 0x0028 /* P2 输入寄存器*/ const sfrb P2IN = P2IN_; #define P2OUT_ 0x0029 /* P2 输出寄存器*/ sfrb P2OUT = P2OUT_; #define P2DIR_ 0x002A /* P2 方向选择寄存器*/ sfrb P2DIR = P2DIR_; #define P2IFG_ 0x002B /* P2 中断标志寄存器*/ sfrb P2IFG = P2IFG_; #define P2IES_ 0x002C /* P2 中断边沿选择寄存器*/ sfrb P2IES = P2IES_; #define P2IE_ 0x002D /* P2 中断使能寄存器*/ sfrb P2IE = P2IE_; #define P2SEL_ 0x002E /* P2 功能选择寄存器*/ sfrb P2SEL = P2SEL_; MSP430寄存器中文注释---P3/4口(无中断功能) /************************************************************ * DIGITAL I/O Port3/4寄存器定义无中断功能 ************************************************************/ #define P3IN_ 0x0018 /* P3 输入寄存器*/

UART寄存器介绍

UART寄存器介绍 UARTn_BR: UART波特率寄存器 UARTn_BR[15:0]: 由定时器的装入寄存器定时装入相应内容。 UARTn_CR.Run=0可以装入直到UARTn_CR.Run=1才写入无效 UARTn_TxBUFR:UART传输寄存器 UARTn_TxBUFR[8]: 传输数据第八位或者奇偶校验位或者唤醒位或者未定义的位有相应操作模式决定 1.如果是001模式则此位写0 2.如果是8+校验111模式则此位由UART自己处理写入软件操作无效 UARTn_TxBUFR[7]: 传输数据第七位或者奇偶校验位 1.如果是7+校验011模式同样此位由UART自己处理写入软件操作无效 UARTn_TxBUFR[6:0]:数据位 UARTn_RxBuffer: UART接收寄存器 RX[9]:桢错误标志1表示此桢有问题 RX[8]:接收数据位8,或者奇偶校验位或者唤醒位

RX[7]:接收数据位7,或者奇偶校验位 RX[6:0]:数据位 UARTn_CR:UART控制寄存器 CR[15-11]保留都是0 CR[10]FifoEnble队列模式0关闭表示TxFIFO认为是包含了16位数据才是满栈 1是开启表示TxFIFO认为当前就是才是满栈直接置TxFULL位 CR[9]SCENBLE 智能卡关闭还是开启不使用则置0 CR[8]RxEnble 接收功能关闭开启由下降沿来触发RXD脚初始化 CR[7]Run=0波特率无用=1则有用 CR[6]LoopBack=0标准的接收和发送模式=1是特殊模式。此位只由UART无效被改变 CR[5]ParityOdd选择奇偶校验=0则为偶校验=1为奇校验CR[43]StopBits 00 0.5停止位01是1个停止位10是1.5个11是2个 CR[2:0] MODE 5种模式 UARTn_IER UART的中断允许寄存器 15-9保留位为0 8 RxHalfFullIE 接收存储器超过8位则置

14、芯片与寄存器的介绍

理解芯片控制的原理 如果要说做单片机很难吗?其实并不难,用3句话就可以讲明白: 第1句话:芯片管脚不是输入,就是输出。 我们所有的程序,用单片机控制的产品,以及外设,无非就是控制芯片的各个管脚输入或者输出两个状态;例如,芯片发送数据就是输出;芯片驱动一个产品,也是输出;芯片接收数据就是输入;单片机对一个存储芯片写输入,可以理解为单片机与存储芯片连接的管脚输出状态,输出数据到存储芯片的管脚上,而存储芯片此时它的芯片对应管脚被配置成输入,将数据写入到芯片内部。 所以说,芯片管脚不是输入,就是输出,当然,如果你不使用这个管脚,也可以将它配置成某一种中间状态,免得干扰了外界,影响了PCB板上的其他元器件状态。 第2句话:芯片管脚不是高电平,就是低电平。 无论管脚是输入还是输出,它的目的是传输数据,传输信息,所以要么是高电平,要么低电平,通过010101这样的数据来传输它想传输的内容;这个就是所谓的二进制。 第3句话:传输协议。 什么是传输协议,比如与串口芯片通信,那么就要是串口协议的;如果是I2C 协议的EERPOM,那么就是I2C协议;还有其他一些比如485协议,CAN协议,USB协议,SD卡的SDIO协议…….等等数不胜数。 而这些协议,无非就是按照预先规定的表达方式进行通信,比如举个例子,我约定先连续发4个1,,然后再发4个0,就表示芯片A要开始发数据给芯片B 了,即芯片A通过它的芯片管脚发‘11110000’给到芯片B的时候,那么芯片B 就知道芯片A要给它真正的数据,它就要做好准备工作,准备好之后,芯片B 就会给芯片A一个回应,当芯片A收到芯片B的回应,就正式开始发数据。 这样通信双方之间的协商规定,就构成了协议,经过这么多年,就形成了我们所常见到的串口协议,CAN协议,USB协议(像USB协议又分为USB1.0协议,USB2.0协议,USB3.0协议,版本越高,速度就越快,协议进行优化后,通信效率也变高了)。 不知道大家理解了没有呢?所以总结下来,一个芯片最简单的外设莫过于 I/O口的高低电平控制,我们这里将详细讲解一下如何用一个I/O口去控制一个LED灯的亮灭。

段寄存器的工作原理

一、段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中数据总线与地址总线的宽度不一致。 数据总线的宽度,也即是ALU(算数逻辑单元)的宽度,平常说一个CPU是“16位”或者“32位”指的就是这个。8086CPU的数据总线是16位。 地址总线的宽度不一定要与ALU的宽度相同。因为ALU的宽度是固定的,它受限于当时的工艺水平,当时只能制造出16位的ALU;但地址总线不一样,它可以设计得更宽。地址总线的宽度如果与ALU相同当然是不错的办法,这样CPU的结构比较均衡,寻址可以在单个指令周期内完成,效率最高;而且从软件的解决来看,一个变量地址的长度可以用整型或者长整型来表示会比较方便。 但是,地址总线的宽度还要受制于需求,因为地址总线的宽度决定了系统可寻址的范围,即可以支持多少内存。如果地址总线太窄的话,可寻址范围会很小。如果地址总线设计为16位的话,可寻址空间是2^16=64KB,这在当时被认为是不够的;Intel最终决定要让8086的地址空间为1M,也就是20位地址总线。 地址总线宽度大于数据总线会带来一些麻烦,ALU无法在单个指令周期里完成对地址数据的运算。有一些容易想到的可行的办法,比如定义一个新的寄存器专门用于存放地址的高4位,但这样增加了计算的复杂性,程序员要增加成倍的汇编代码来操作地址数据而且无法保持兼容性。 Intel想到了一个折中的办法:把内存分段,并设计了4个段寄存器,CS,DS,ES和SS,分别用于指令、数据、其它和堆栈。把内存分为很多段,每一段有一个段基址,当然段基址也是一个20位的内存地址。不过段寄存器仍然是16位的,它的内容代表了段基址的高16位,这个16位的地址后面再加上4个0就构成20位的段基址。而原来的16位地址只是段内的偏移量。这样,一个完整的物理内存地址就由两部分组成,高16位的段基址和低16位的段内偏移量,当然它们有12位是重叠的,它们两部分相加在一起,才构成完整的物理地址。 Base b15 ~ b12 b11 ~ b0 Offset o15 ~ o4 o3 ~ o0 Address a19 ~ a0 这种寻址模式也就是“实地址模式”。在8086中,段寄存器还只是一个单纯的16位寄存器,而且操作寄存器的指令也不是特权指令。通过设置段寄存器和段内偏移,程序就可以访问整个

AD9833详细原理解析(附内部寄存器说明)

基于AD9833的高精度可编程波形发生器系统设计 来源:国外电子元器件 1 引言 频率合成器在通信、雷达和导航等设备中既是发射机的激励信号源,又是接收机的本地振荡器;在电子对抗设备中可作为干扰信号发生器;在测试设备中则作为标准信号源。因此频率合成器被称为许多电子系统的“心脏”。而设计高精度,易于操作的频率合成器则是核心,因此,这里提出了一种基于DDS AD9833的高精度波形发生器系统解决方案。用户可直接编辑设置所需的波形频率和峰峰值等信息,利用串口将配置信息发送到电路板,实时控制波形。该系统设计已成功应用于某型雷达测速仪测试设备。 2 AD9833简介 AD9833是ADI公司的一款低功耗、DDS器件,能够输出正弦波、三角波、方波。AD9833无需外接元件,输出频率和相位可通过软件编程设置,易于调节。其频率寄存器为28位,主频时钟为25 MHz时,其精度为0.1 Hz;主频时钟为l MHz时.精度可达0.004 Hzt2。 AD9833内部有5个可编程寄存器:1个16位控制寄存器,用于设置器件_T 作模式;2个28位频率寄存器和2个12位相位寄存器,分别用于设置器件输出正弦波的频率和相位。AD9833有3根串行接口线,可与SPI,QSPI,MICRO-WIRE 和DSP接口标准相兼容。在串口时钟SCLK的作用下,数据是以16位方式加载至设备。 AD9833的内部电路主要有数控振荡器(NCO)、频率和相位调节器、SineROM、D/A转换器、电压调整器。AD9833的核心是28位的相位累加器,它由加法器和相位寄存器组成,而相位寄存器是按每个时钟增加步长,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。正弦查询表包含1个周期正弦波的数字幅值信息,每个地址对应正弦波中O。~360°内的1个相位点。查询表把输入的地址相位信息映射成正弦波幅值的数字量信号,驱动D/A转换器输出模拟量。 输出正弦波频率为: 式中:FREQREG为频率控制字,由频率寄存器FREQOREG或FREQlREG的值给定,其范围为0≤M<228一1。fMCLK为参考时钟频率。 输出正弦波的相位为2π/4 096xPHASEREG,其中PHASEREG是所选相位寄存器的值。输出正弦波的峰峰值固定.约600 mV,且正弦波不是标准正弦波,即波谷是0 V,而不是负电压。因此,输出正弦波为: 式中:K约600 mV,与器件内部参考电压有关。

ARM寄存器简介

ARM寄存器简介 ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。 (1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。 (2)6个状态寄存器:状态寄存器也是32位的寄存器,但是只使用了其中的12位。 1.通用寄存器 在ARM处理器的7种模式下都有一组对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14、一个或两个状态寄存器和PC。在所有的寄存器中,有些是各种模式下共用的同一个物理寄存器,有些是各种模式自己独立拥有的物理寄存器。详细如表1-3所示。 表1-3 ARM物理寄存器 用户模式系统模 式特权模式中止模式未定义指令 模 外部中断模快速中断模 R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_fiq R9 R9 R9 R9 R9 R9 R9_fiq R10 R10 R10 R10 R10 R10 R10_fiq R11 R11 R11 R11 R11 R11 R11_fiq R12 R12 R12 R12 R12 R12 R12_fiq R13 R13 R13_svc R13_abt R13_und R13_irq R13_fiq R14 R14 R14_svc R14_abt R14_und R14_irq R14_fiq PC PC PC PC PC PC PC CPSR CPSR CPSR CPSR CPSR CPSR CPSR SPSR_svc S PSR_abt SPSR_und SPSR_irq SPSR_fiq 通用寄存器通常又可以分为下面3类。 n 未备份寄存器:包括R0~R7。 n 备份寄存器:包括R8~R14。

SDHC部分寄存器介绍

11.3.2 K60的SD模块存储器映像与寄存器定义 K60的SDHC模块主要使用到表11-6中寄存器,其他寄存器详细信息可参见网络光盘中的本章阅读材料。 表11-6 SDHC模块部分寄存器列表 1.块属性寄存器(Block Attributes Register,SDHC_BLKATTR) 这个寄存器是用来配置数据块数和每块的字节数。 图52-4 SDHC_BLKATTR D31~D16—BLKCNT位,当前传输的块数。当XFERTYP[BCEN]被置1时,该寄存器有用,仅用于多块间传输。主驱动应设定该寄存器为从1到最大块数(最大为65535块)之间的一个值,每块传输并停止后,该域自减1,直到块数为0。设定块数为0将导致没有数据块传输。当XFERTYP [MSBDEL]位被清零时,只能单块传输,BLKCNT的读值总为1。当为0时,表示停止计数;为1时,表示1块;为0xFFFF时,表示65535块。 D15~D13—保留。 D12~D0—BLKSIZE位,传输块的大小。该寄存器为块数据传输时,每块数据大小,其值可被设定为1字节到最大缓冲值(最大为4096字节)之间的数。该域在SDHC空闲时,修改才有效。传输期间的读操作可能发回一个无效值,且修改无效。当为0时,表示无数据传输;为1时,表示1字节;为0x1000时,表示4096块。 2.命令参数寄存器(Command Argument Register,SDHC_CMDARG) 该寄存器用于写入SD/MMC操作命令参数。 D31~D0—CMDARG位,命令内容。在SD或MMC的协议中,SD/MMC命令内容被

指定在命令格式的39-8位。当PRSSTAT[CDIGBO]为1,该寄存器被写保护。 3.传输类型寄存器(Transfer Type Register,SDHC_XFERTYP) D31~D30—保留。 D29~D24—CMDINX位,命令索引。在SD储存卡物理层协议和SDIO卡协议中,这些位的命令应设为命令格式的45-40位。 D23~D22—CMDTYP位,命令类型。一共可以设置四种命令类型,执行普通命令时,该域为0。3种特殊类型命令:暂停,重新开始,和中止命令。暂停命令:如果暂停命令成功,SDHC模块认为总线已经释放,并有可能使用DAT通道发出下一个命令;重新开始命令:主驱动通过在发送暂停命令之前,恢复寄存器储存值重新开始数据传输,并发送重新开始命令;中止命令:如果当执行读传输时发送该命令,SDHC将停止读入缓冲。如果当执行写传输时发送该命令,SDHC将停止DAT通道。终止命令发放后,主机驱动器发送一个软件复位命令。 D21—DPSEL位,传输时的数据选择。当该域为1时,表明数据需要发送并且通过DAT 通道传输。当该域为0时,表明命令仅通过CMD通道或没有数据传输的命令,但使用繁忙信号通道DAT[0]。 D20—CICEN位,命令索引检测使能。如果该位置1,SDHC将检测响应值是否与命令索引相等。如果不等,将报告命令索引错误;如果该位置0,则不检测响应。 D19—CCCEN位,命令CRC检测使能。如果该位置1,SDHC将检测响应的CRC字段。如果检测到错误则报告命令CRC错误。如果该位置0,不检测CRC段,这些位由CRC 字段值根据响应长度的变化检测。 D18—保留。 D17~D16—RSPTYP位,响应类型。00b:无响应;01b:响应长度136;10b:响应长度48;11b:响应长度48,响应后检测忙碌状态。 D15~D6—保留。 D5—MSBSEL位,多/单块选择。该位控制多块DAT通道数据传输,对其他命令,该位应置为0。如果该位为1,就不必设定块计数寄存器。 D4—DTDSEL位,数据传输方向选择。该位定义了DAT通道数据发送的方向。当主驱动从SD卡发送数据到SDHC时该位置1,其他命令时则置0。 D3—保留。 D2—AC12EN位,自动CMD12使能。存储器的多块传输需要CMD12停止事务。当该位为1,在最后块传输完成后,SDHC将自动发出一个CMD12。主驱动发出的命令不需

单片机寄存器名称

【转】【51单片机特殊功能寄存器功能一览表】 Posted on 2011-03-26 15:07 香格里拉\(^o^)/阅读(688) 评论(0)编辑收藏 【转】【51单片机寄存器功能一览表】 21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SF R存储空间中,地址空间为80H-FFH,在这片SF R空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。 在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有R OM,用来存放程序,有R AM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能 寄存器(SF R)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下: 1、ACC---是累加器,通常用A表示 这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。 2、B--一个寄存器 在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。 3、PSW-----程序状态字。 这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表: 下面我们逐一介绍各位的用途 CY:进位标志。 8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0 例:78H+97H(01111000+10010111) AC:辅助进、借位(高半字节与低半字节间的进、借位)。

通用寄存器的作用

通用寄存器的作用 数据寄存器不讲,简单的说,段寄存器(ES,CS,SS,DS,FS,GS)和变址寄存器(SI,DI)是配合使用访问段数据的,指针寄存器(BP,SP)是用来操作堆栈的,BP指向栈的基址,SP则永远指向栈顶。 另外指令指针EIP存放的是要执行的下一条指令在代码段里的偏移量,在实方式下,每个段的最大范围都是64K,所以EIP的高16位都是0。 寄存器的分类寄存器主要用途 通用寄存器 数据 寄存器 AX 乘、除运算,字的输入输出,中间结果的缓存 AL 字节的乘、除运算,字节的输入输出,十进制算术运算 AH 字节的乘、除运算,存放中断的功能号 BX 存储器指针 CX 串操作、循环控制的计数器 CL 移位操作的计数器 DX 字的乘、除运算,间接的输入输出 变址 寄存器 SI 存储器指针、串指令中的源操作数指针 DI 存储器指针、串指令中的目的操作数指针 变址 寄存器 BP 存储器指针、存取堆栈的指针 SP 堆栈的栈顶指针 指令指针IP/EIP 标志位寄存器Flag/EFlag 32位CPU的段寄存器16位CPU的 段寄存器 ES 附加段寄存器 CS 代码段寄存器 SS 堆栈段寄存器 DS 数据段寄存器新增加的 段寄存器 FS 附加段寄存器 GS 附加段寄存器

--------------------------------- 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。 累加器可用于乘、除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count Register)。在循环和字符串操作时,要用它来控制循环次 数;在位操作中,当移多位时,要用CL来指明移位的位数; 寄存器DX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数 参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。详细内容请见第3.8节——32位地址的寻址方式。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。其低16位对应先前CPU中的SI 和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。具体描述请见第5.2.11节。 3、指针寄存器 32位CPU有2个32位通用寄存器EBP和ESP。其低16位对应先前CPU中的SBP 和SP,对低16位数据的存取,不影响高16位的数据。 寄存器EBP、ESP、BP和SP称为指针寄存器(Pointer Register),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式(在第3章有详细介绍),为以不同的地址形式访问存储单元提供方便。

寄存器的赋值

C 编程之——寄存器赋值操作(转) 通过这段时间的工作和学习,我感觉在嵌入式硬件编程中,大多数情况下都是对相应硬件的功能寄存器进行设置和操作。 一, 寄存器的设置和操作特性 1,一个寄存器的每个位有其不同的意义,进行不同的设置会使硬件产生不同的效果和功能; 2,有些情况下需要对一个寄存器进行连续的不同的甚至完全相反的设置; 3,有些情况下需要对一个寄存器中的某一位或一位进行连续的不同的甚至完全相反的设置,而其余的位要保持不变; 4,有时,对一个寄存器进行设置时,对其不同的位进行先后顺序不同的设置,即对其各个位有先后设置的顺序的要求,使硬件产生的结果也不同; 5,有时,对于一个寄存器要求必须一次赋值,若对其某些位赋值先后顺序不同,便达不到预期的效果和功能。 二,寄存器的赋值操作方法 为说明方便,定义如下3个8位的寄存器: #define REG 0xFFFFFF10 1,对单个的位进行赋值

(1)将寄存器REG的第5位置“1” REG |= (1 << 5); (2)将寄存器REG的第5位清零 REG &= ~(1 << 5); (3)将寄存器REG的第3、5位置“1” REG |= (1 << 5) | (1 << 3); (4)将寄存器REG的第3、5位清零 REG &= ~( (1 << 5) | (1 << 3) ); 2,直接赋值 (1)将寄存器REG的0、1、2、3、5、7位置“1” REG = 0x5F; (即给寄存器REG1赋值为1010 1111,这种方法多在初始化中用)(2)分别将寄存器REG的1、3、5、7位置“1”,0、2位置“0” uint32 temp; tmep = REG; temp &= ~0x01; temp |= (1 << 1); temp &= ~(1 << 2); temp |= (1 << 3); temp |= (1 << 5); temp |= (1 << 7); REG = temp;

2.2寄存器

2.2 寄存器 本节只需要了解 处理器(CPU)由运算器、控制器、寄存器、输入设备和输出设备组成,这些器件由处理数据总线相连。【此节内容是为了了解寄存器相关知识,不需要掌握】 它们在处理器中,分工明确: 运算器:进行数据的处理。 寄存器:进行数据的存储。 控制器:控制各种器件工作。 输入设备:将人们熟悉的信息形式转化为机器能识别的信息形式,如键盘、鼠标等。 输出设备:将计算机运算的结果转化为人们熟悉的信息形式,如显示器、打印机等。 处理数据总线:连接各种器件,使各个器件进行数据的传送。 2.2.1【简单介绍寄存器在处理器中是怎么工作的】 通过图3-2-1我们来简单了解,处理器的底部和四周有大量的引脚,可以接受外界发来传送的电信号。每个引脚都有自己的用 处。有些引脚用来将参与运算的数字输送 到处理器内部,有些引脚可以重复使用 的。 假如要进行加法运算,这些引脚将依 次把加数和被加数送入处理器,处理器一 旦接受信号,将会以二进制数组成的电信 号反应在引脚相连的内部线路上,是一组 高低电平的组合,代表着二进制数的每一 位,此时必须用寄存器(Register)(是双向器 件)的暂时存储,之所以这样做,是因为 相同的引脚和线路马上要输入被加数,重复之图2-2-1 前的工作,也正因为这个原因,这些内部线路称为处理数据总线。它们之间通过控制器(图中没有画)发出指令,控制各个器件在某个正确的时间做某个动作。 图2-2-1寄存器(Register A)和寄存器(Register B)将分别参与运算,假设寄存器(Register A)暂时存储的是加数,寄存器(Register B)暂时存储的是被加数。此时寄存器(Register A)和寄存器(Register B)都暂时存储了数据,将不再受外数据的影响。运算逻辑部件输出结果,结果被输送到寄存器(Register C),通过数据总线输送到处理器外面,或再次送入到寄存器(Register A)和寄存器(Register B)参与运算。

USART寄存器介绍

USART数据寄存器——UDR 寄存器UDR各位定义如下: USART 发送数据缓冲寄存器和USART 接收数据缓冲寄存器共享相同的I/O 地址,称为USART 数据寄存器或UDR。将数据写UDR 时实际操作的是发送数据缓冲器存器(TXB) ,读UDR 时实际返回的是接收数据缓冲寄存器(RXB) 的内容。5、6、7 比特字长模式下,未使用的高位被发送器忽略,而接收器则将它们设置为0。只有当UCSRA 寄存器的UDRE 标志置位后才可以对发送缓冲器进行写操作。如果UDRE没有置位,那么写入UDR 的数据会被USART 发送器忽略。当数据写入发送缓冲器后,若移位寄存器为空,发送器将把数据加载到发送移位寄存器。然后数据串行地从TxD 引脚输出。接收缓冲器包括一个两级FIFO ,一旦接收缓冲器被寻址FIFO 就会改变它的状态。因此不要对这一存储单元使用读- 修改- 写指令(SBI 和CBI)。使用位查询指令(SBIC 和SBIS) 时也要小心,因为这也有可能改变FIFO 的状态。 USART控制和状态寄存器A——UCSR A * Bit 7 –RXC: USART 接收结束 接收缓冲器中有未读出的数据时RXC 置位,否则清零。接收器禁止时,接收缓冲器被刷新,导致RXC 清零。RXC 标志可用来产生接收结束中断( 见对RXCIE 位的描述)。 * Bit 6 –TXC: USART 发送结束 发送移位缓冲器中的数据被送出,且当发送缓冲器(UDR) 为空时TXC 置位。执行发送结束中断时TXC 标志自动清零,也可以通过写1 进行清除操作。TXC 标志可用来产生发送结束中断( 见对TXCIE 位的描述)。 * Bit 5 –UDRE: USART 数据寄存器空

8086 CPU 寄存器简介

引子 打算写几篇稍近底层或者说是基础的博文,浅要介绍或者说是回顾一些基础知识, 自然,还是得从最基础的开始,那就从汇编语言开刀吧, 从汇编语言开刀的话,我们必须还先要了解一些其他东西, 像CPU ,内存这些知识点还是理解深刻一点的比较好, 所以这一篇博文就绕着80x86 CPU 中寄存器的基础部分下手,至于其他的一些将会在后续的博文中介绍。 同时在这里说明一下,本篇博文介绍的算是比较详细的了,而且介绍的知识点也是比较多的,所以造成博文长度过长, 如果有兴趣想了解这一块的话,还请自行斟酌好阅读比例,建议分3 次以上阅览。 读者定位 本博文主要将介绍的是8086 CPU 中的寄存器,既然是8086 CPU 寄存器简介的话, 自然,面向的是初级一些的读者,其中不会涉及太多难点,同时,所有的介绍,我也会尽可能的从基础开始, 然后循序渐进的介绍,同时也会尽量的将知识点介绍详细, 介绍的过程中也会涉及到一些汇编程序代码,当然,采用的是最简单的方式介绍而已, 本篇博文也就是回顾一些基础知识,读者主要定位于想对8086 CPU 有所了解, 希望对整个程序设计的底层有所了解的朋友,而且读者最好是拥有一定的计算机基础和汇编语言基础。 开头 首先浅要介绍一下Intel CPU 的发展史吧: Intel CPU 系列,最初是4 位微处理器4004,然后到到8 位微处理器的8008 , 再到8 微微处理器8080,以及稍后的16 位微处理器8086, 由8086 开始,Intel 进入现在所谓的x86 时代。 Intel 8086 为16 位CPU ,而因为在8086 之前的CPU 都是8 位CPU,这样也就造成了很多的外设也只支持8 位, 因此Intel 紧接着就退出了8 位的8088 CPU,因此Intel 8088 也就可以看做是8086 的8 位版本;如果是但从汇编语言的角度上来说,8086 和8088 是没有区别的,即8086 上跑的程序可以不加修改的移植到8088 , 8088 上跑的程序也可以不加修改的移植到8086 上, 当然,还是有些特殊的地方是不同的,而这些基本上在这里可以忽略掉, 在8088 CPU 之后,Intel 又推出了80186 ,80286 ,这两款CPU 均是16 位CPU , 而对于80186 来说,其与8086 的区别可以简单的看做是80186 多了几条指令而已, 而80286 则不同,80286 的地址总线数目有了变化, 在8086 , 8088 , 80186 上,CPU 的地址总线都是20 根,即可最大寻址220即达到1MB 的寻址能力,而对于80286 CPU 来说,其地址总线数目达到了24 根,从而最大寻址能力为224即16MB, 由于支持更多的物理内存寻址,因此80286 便开始成为了多任务,多用户系统的核心。 而后来,Intel 又推出了80386 ,80386 为32 位微处理器,Intel 80x86 家族的32 位微处理器始于80386; 同时80386 也完全兼容先前的8086/8088,80186,80286,并且80386 全面支持32 位数据类型和32 位操作,

ARM处理器模式和寄存器介绍

ARM处理器共有7种运行模式: 用户模式(user,use)正常程序执行模式 快速中断模式(fiq)用于高速数据传输和通道处理 外部中断模式(irq)用于通常的中断处理 管理模式(sve)操作系统使用的一种保护模式 数据访问终止模式(abt)用于虚拟存储及存储保护 未定义指令终止模式(und)用于支持通过软件方针硬件的协处理器 系统模式(sys)用于运行特权级的操作系统任务 除了用户模式之外的6种处理器模式称为特权模式(privileged modes)。在这些模式下,程序可以访问所有的系统资源,也可以任意第进行处理器模式切换。其中,除系统模式外,其他5种特权模式又称为异常模式。 处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过程进行切换。大多数的用户程序运行在用户模式下。这时,应用程序不能够访问一些受操作系统保护的系统资源。应用程序也不能直接进行处理器模式的切换。当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理过程中进行处理器处理器模式的切换。这种体系结构可以使系统控制整个系统的资源。 当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式中都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,拥护模式下的寄存器(保存了程序运行状态)不被破坏。 系统模式并不是通过异常过程进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用拥护模式的寄存组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。 ARM处理器含有37个寄存器,这些寄存器包括以下两类寄存器。 (1)31个通用寄存器:包括程序计数器PC等,这些寄存器都是32位寄存器。 (2)6个状态寄存器:状态寄存器也是32位的寄存器,但是只使用了其中的12位。 在ARM处理器的7种模式下都有一组对应的寄存器组。在任意时刻,可见的寄存器组包括15个通用寄存器R0~R14、一个或两个状态寄存器和PC。在所有的寄存器中,有些是各种模式下共用的同一个物理寄存器,有些是各种模式自己独立拥有的物理寄存器。 用户模式系统 模式 特权 模式 中止 模式 未定义指令 模式 外部中断 模式 快速中断 模式 R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_fiq

相关文档