STM32寄存器列表 SPI相关寄存器

作者:fly 发布于:2014-6-18 10:34 分类:嵌入式

本文出自www.forwhat.cn

 

SPI控制寄存器1(SPI_CR1)

15位:BIDIMODE双向数据模式使能,定义:0(双线双向模式),1(单线双向模式)

14位:BIDIOE双向模式下的输出使能,和BIDIMODE位一起决定在“单线双向”模式下数据的输出方向。定义:0(输出禁止(只收模式)),1(输出使能(只发模式))

     这个“单线”数据线在主设备端为MOSI引脚,在从设备端为MISO引脚。

13位:CRCEN硬件CRC校验使能,定义:0(禁止CRC计算),1(启动CRC计算)注:只有在禁止SPI时(SPE=0),才能写该位,否则出错。该位只能在全双工模式下使用。

12位:CRCNEXT下一个发送CRC,定义:0(下一个发送的值来自发送缓冲区),1(下一个发送的值来自发送CRC寄存器),

     注:在SPI_DR寄存器写入最后一个数据后应马上设置该位。

11位:DFF数据帧格式,定义:0(使用8位数据帧格式进行发送/接收),1(使用16位数据帧),注:只有当SPI禁止(SPE=0)时,才能写该位,否则出错。

10位:RXONLY只接收,该位和BIDIMODE位一起决定在“双线双向”模式下的传输方向。在多个从设备的配置中,在未被访问的从设备上该位被置1,

     使得只有被访问的从设备有输出,从而不会造成数据线上数据冲突。定义:0(全双工(发送和接收)),1(禁止输出(只接收模式))

9位:SSM软件从设备管理,当SSM被置位时,NSS引脚上的电平由SSI位的值决定。定义:0(禁止软件从设备管理),1(启用软件从设备管理)

8位:SSI内部从设备选择,该位只在SSM位为’1’时有意义。它决定了NSS上的电平,在NSS引脚上的I/O操作无效。

7位:LSBFIRST帧格式,定义:0(先发送MSB),1(先发送LSB),注:当通信在进行时不能改变该位的值。

6位:SPE-SPI使能,定义:0(禁止SPI设备),1(开启SPI设备)

5-3位:BR[2:0]波特率控制,定义:000(fPCLK/2)001(fPCLK/4)010(fPCLK/8)011(fPCLK/16)100(/32)101(/64)110(/128)111(/256)注:通信时不能改

2位:MSTR主设备选择,定义:0(配置为从设备),1(配置为主设备),注:当通信正在进行的时候,不能修改该位。

1位:CPOL时钟极性,定义:0(空闲状态时,SCK保持低电平),1(空闲状态时,SCK保持高电平),注:当通信正在进行的时候,不能修改该位。

0位:CPHA时钟相位,定义:0(数据采样从第一个时钟边沿开始),1(数据采样从第二个时钟边沿开始)注:当通信正在进行的时候,不能修改该位。

 

 

SPI_CR2(SPI控制寄存器2)

7位:TXEIE发送缓冲区空中断使能,定义:0(禁止TXE中断),1(允许TXE中断,当TXE标志置位为’1’时产生中断请求)

6位:RXNEIE接收缓冲区非空中断使能,定义:0(禁止RXNE中断),1(允许RXNE中断,当RXNE标志置位时产生中断请求)

5位:ERRIR错误中断使能,当错误(CRCERR、OVR、MODF)产生时,该位控制是否产生中断,定义:0(禁止错误中断),1(允许错误中断)

2位:SSOE-SS输出使能,定义:0(禁止在主模式下SS输出,该设备可以工作在多主设备模式),1(设备开启时,开启主模式下SS输出,该设备不能工作在多主设备模式

1位:TXDMAEN发送缓冲区DMA使能,当该位被设置时,TXE标志一旦被置位就发出DMA请求,定义:0(禁止发送缓冲区DMA),1(启动发送缓冲区DMA)

0位:RXDMAEN接收缓冲区DMA使能,当该位被设置时,RXNE标志一旦被置位就发出DMA请求,定义:0(禁止接收缓冲区DMA),1(启动接收缓冲区DMA)

 

 

SPI 状态寄存器(SPI_SR)

7位:BSY忙标志,定义:0(SPI不忙),1(SPI正忙于通信,或者发送缓冲非空)该位由硬件置位或者复位,使用这个标志时需要特别注意23.3.7节和.8节

6位:OVR溢出标志,定义:0(没有出现溢出错误),1(出现溢出错误),该位由硬件置位,由软件序列复位。关于软件序列的详细信息,参考23.4.7节。

5位:MODF模式错误,定义:0(没有出现模式错误),1(出现模式错误),该位由硬件置位,由软件序列复位。关于软件序列的详细信息,参考23.3.10节

4位:CRCERR-CRC错误标志,定义:0(收到的CRC值和SPI_RXCRCR寄存器中的值匹配),1(收到的CRC值和SPI_RXCRCR寄存器中的值不匹配)硬件置位,软件写0而复位

3位:UDR下溢标志位,定义:0(未发生下溢),1(发生下溢)该标志位由硬件置’1’,由一个软件序列清’0’,注:在SPI模式下不使用。

2位:CHSIDE声道,定义:0(需要传输或者接收左声道),1(需要传输或者接收右声道)注:在SPI模式下不使用。在PCM模式下无意义。

1位:TXE发送缓冲为空,定义:0(发送缓冲非空),1(发送缓冲为空)

0位:RXNE接收缓冲非空,定义:0(接收缓冲为空),1(接收缓冲非空)

 

 

SPI 数据寄存器(SPI_DR)

15-0位:DR[15:0]数据寄存器,待发送或者已经收到的数据,数据寄存器对应两个缓冲区:一个用于写(发送缓冲);另外一个用于读(接收缓冲)。写操作将数据

       写到发送缓冲区;读操作将返回接收缓冲区里的数据。对SPI模式的注释:根据SPI_CR1的DFF位对数据帧格式的选择,数据的发送和接收可以是8位或者16

       位的。为保证正确的操作,需要在启用SPI之前就确定好数据帧格式。对于8位的数据,缓冲器是8位的,发送和接收时只会用到SPI_DR[7:0]。在接收时,

       SPI_DR[15:8]被强制为0。对于16位的数据,缓冲器是16位的,发送和接收时会用到整个数据寄存器,即SPI_DR[15:0]。

 

 

SPI_CRCPR(SPI CRC多项式寄存器)(I2S模式下不使用)

15-0位:CRCPOLY[15:0]:CRC多项式寄存器,该寄存器包含了CRC计算时用到的多项式。其复位值为0x0007,根据应用可以设置其他数值。

 

 

SPI_RXCRCR(SPI Rx CRC寄存器)(I2S模式下不使用)

15-0位:RXCRC[15:0]接收CRC寄存器,在启用CRC计算时,RXCRC[15:0]中包含了依据收到的字节计算的CRC数值。当在SPI_CR1的CRCEN位写入’1’时,该寄存器被复位

       CRC计算使用SPI_CRCPR中的多项式。当数据帧格式被设置为8位时,仅低8位参与计算,并且按照CRC8的方法进行;当数据帧格式为16位时,寄存器中的

       所有16位都参与计算,并且按照CRC16的标准。注:当BSY标志为’1’时读该寄存器,将可能读到不正确的数值。

 

 

SPI_TXCRCR(SPI Tx CRC寄存器)

15-0位:TxCRC[15:0]发送CRC寄存器,在启用CRC计算时,TXCRC[15:0]中包含了依据将要发送的字节计算的CRC数值。当在SPI_CR1中的CRCEN位写入’1’时,该寄存器被复位。

       CRC计算使用SPI_CRCPR中的多项式。当数据帧格式被设置为8位时,仅低8位参与计算,并且按照CRC8的方法进行;当数据帧格式为16位时,

       寄存器中的所有16个位都参与计算,并且按照CRC16的标准。注:当BSY标志为’1’时读该寄存器,将可能读到不正确的数值。

 

 

SPI_I2S配置寄存器(SPI_I2S_CFGR)

11位:I2SMOD-I2S模式选择,定义:0(选择SPI模式),1(选择I2S模式)

10位:I2SE-I2S使能,定义:0(关闭I2S),1(I2S使能),注:在SPI模式下不使用。

9-8位:I2SCFG-I2S模式设置,定义:00(从设备发送)01(从设备接收)10(主设备发送)11(主设备接受),注:该位只有在关闭了I2S时才能设置。在SPI模式下不使用。

7位:PCMSYNC-PCM帧同步,定义:0(短帧同步),1(长帧同步),注: 该位只在I2SSTD = 11 (使用PCM标准)时有意义。在SPI模式下不使用。

5-4位:I2SSTD-I2S标准选择,定义:00:(I2S飞利浦标准),01(高字节对齐标准 (左对齐),10(低字节对齐标准(右对齐),11(PCM 标准)

      注:为了正确操作,只有在关闭了I2S时才能设置该位。在SPI模式下不使用。

3位:CKPOL静止态时钟极性,定义:0(I2S时钟静止态为低电平),1(I2S时钟静止态为高电平),注:为了正确操作,该位只有在关闭了I2S时才能设置,在SPI模式下不使用。

2-1位:DATLEN待传输数据长度,定义:00(16位数据长度)01(24位数据长度)10(32位数据长度)11(不允许)注:该位只有在关闭了I2S时才能设置。在SPI模式下不使用。

0位:CHLEN声道长度 (每个音频声道的数据位数),定义:0(16位宽),1(32位宽),只有在DATLEN=00时该位的写操作才有意义,否则声道长度都由硬件固定为32位

    注:为了正确操作,该位只有在关闭了I2S时才能设置。在SPI模式下不使用。

 

 

SPI_I2S预分频寄存器(SPI_I2SPR)

9位:MCKOE主设备时钟输出使能,定义:0(关闭主设备时钟输出),1(主设备时钟输出使能)

   为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。

8位:ODD奇系数预分频,定义:0(实际分频系数=I2SDIV *2),1(实际分频系数=(I2SDIV * 2)+1)

   注:为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。

7-0位:I2SDIV-I2S线性预分频,禁止设置I2SDIV [7:0] = 0或者I2SDIV [7:0] = 1。参见23.4.3节

      注:为了正确操作,该位只有在关闭了I2S时才能设置。仅在I2S主设备模式下使用该位。在SPI模式下不使用。



发表评论:

 
Powered by emlog sitemap