STM32F10 x_SPI与I2S.doc_第1页
STM32F10 x_SPI与I2S.doc_第2页
STM32F10 x_SPI与I2S.doc_第3页
STM32F10 x_SPI与I2S.doc_第4页
STM32F10 x_SPI与I2S.doc_第5页
免费预览已结束,剩余20页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SPI与I2S Table.0-1 SPI寄存器No寄存器描述SPII2S1CR1SPI控制寄存器12CR2SPI控制寄存器23SRSPI状态寄存器4DRSPI数据寄存器5CRCPRSPI CRC多项式寄存器6RxCRCRSPI接收CRC寄存器7TxCRCRSPI发送CRC寄存器8I2S_CFGRI2S配置寄存器9I2SPRI2S预分频寄存器备注:小容量和中容量没有I2S接口。故STM32F103RBT6不需要考虑I2S库函数。Table.0-2 库函数列表No函数名描述1SPI_I2S_DeInit将外设SPIxI2Sx寄存器重设为缺省值2SPI_Init根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器3I2S_Init根据I2S_InitStruct中指定的参数初始化外设I2Sx寄存器4SPI_StructInit把SPI_InitStruct中的每一个参数按缺省值填入5I2S_StructInit把I2S_InitStruct中的每一个参数按缺省值填入6SPI_Cmd使能或失能SPI外设7I2S_Cmd使能或失能I2S外设8SPI_I2S_ITConfig使能或失能指定的SPIxI2Sx中断9SPI_I2S_DMACmd使能或失能指定SPIxI2Sx的DMA请求10SPI_I2S_SendData通过外设SPIxI2Sx发送一个数据11SPI_I2S_ReceiveData返回通过SPIxI2Sx最近接收的数据12SPI_NSSInternalSoftwareConfig为选定的SPI软件配置内部NSS管脚13SPI_SSOutputCmd使能或失能指定的SPI SS输出14SPI_DataSizeConfig设置选定的SPI数据大小15SPI_TransmitCRC发送SPIx的CRC值16SPI_CalculateCRC使能或失能指定SPI的传输字CRC值计算17SPI_GetCRC返回指定SPI的发送或者接受CRC寄存器值18SPI_GetCRCPolynomial返回指定SPI的CRC多项式寄存器值19SPI_BiDirectionalLineConfig选择指定SPI在双向模式下的数据传输方向20SPI_I2S_GetFlagStatus检查指定的SPIxI2Sx标志位设置与否21SPI_I2S_ClearFlag清除SPIxI2Sx的待处理标志位22SPI_I2S_GetITStatus检查指定的SPII2Sx中断发生与否23SPI_I2S_ClearITPendingBit清除SPIxI2Sx的中断待处理位注标有SPI_I2S的函数,既符合SPI接口,也符合I2S接口;标示I2S的只能对应I2S接口串行外设接口(SPI)提供与外部设备进行同步串行通讯的功能。接口可以被设置工作在主模式或者从模式。 /*【01】函数SPI_I2S_DeInit* Function Name : SPI_I2S_DeInit* Description : Deinitializes the SPIx peripheral registers to their default* reset values (Affects also the I2Ss).* Input : - SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.* Output : None* Return : None*/void SPI_I2S_DeInit(SPI_TypeDef* SPIx) /* Check the parameters */ assert_param(IS_SPI_ALL_PERIPH(SPIx); switch (*(u32*)&SPIx) case SPI1_BASE: /* Enable SPI1 reset state */ RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, ENABLE); /* Release SPI1 from reset state */ RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1, DISABLE); break;case SPI2_BASE:/I2S只有I2S2、I2S3,分别对应SPI2、SPI3。先开启SPI2外设,然后设置I2SCFGR可以开启I2S2或SPI2 /* Enable SPI2 reset state */ RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, ENABLE); /* Release SPI2 from reset state */ RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI2, DISABLE); break; case SPI3_BASE: /* Enable SPI3 reset state */ RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, ENABLE); /* Release SPI3 from reset state */ RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3, DISABLE); break; default: break; /*【02】函数SPI_Init* Function Name : SPI_Init* Description : Initializes the SPIx peripheral according to the specified * parameters in the SPI_InitStruct.* Input : - SPIx: where x can be 1, 2 or 3 to select the SPI peripheral.* - SPI_InitStruct: pointer to a SPI_InitTypeDef structure that contains the* configuration information for the specified SPI peripheral.* Output : None* Return : None*/SPI_InitTypeDef structure:typedef struct u16 SPI_Direction; u16 SPI_Mode; u16 SPI_DataSize; u16 SPI_CPOL; u16 SPI_CPHA; u16 SPI_NSS; u16 SPI_BaudRatePrescaler; u16 SPI_FirstBit; u16 SPI_CRCPolynomial; SPI_InitTypeDef;SPI_Direction:设置了SPI单向或者双向的数据模式。 Table.02-1 SPI_Direction值SPI_Direction描述CR.15/14/10组合的意义SPI_Direction_2Lines_FullDuplexSPI设置为双线双向全双工0x0000BIDIMODE=0(双线双向):RXONLY:全双工、只接收SPI_Direction_2Lines_RxOnlySPI设置为双线单向接收0x0400SPI_Direction_1Line_RxSPI设置为单线双向接收0x8000BIDIMODE=1(单线双向):BIDIOE:只接收、只发送SPI_Direction_1Line_TxSPI设置为单线双向发送0xC000SPI_Mode:设置了SPI工作模式。 Table .02-2 SPI_Mode值SPI_Mode描述/CR1.8/2组合的意义SPI_Mode_Master设置为主SPI0x0104SSI=1;MSTR=1SPI_Mode_Slave设置为从SPI0x0000SPI_DataSize:设置了SPI的数据大小。 Table.02-3 SPI_DataSize值SPI_DataSize描述/CR1.DFF/bit11SPI_DataSize_16bSPI发送接收16位帧结构0x0800SPI_DataSize_8bSPI发送接收8位帧结构0x0000SPI_CPOL:选择了串行时钟的稳态。 Table.02-4 SPI_ SPI_CPOL值SPI_CPOL描述/CR1.CPOLbit1SPI_CPOL_High时钟悬空高0x0002SPI_CPOL_Low时钟悬空低0x0000SPI_CPHA:设置了位捕获的时钟活动沿。 Table.02-5 SPI_SPI_CPHA值SPI_CPHA描述/CR1.CPHA/bit0SPI_CPHA_2Edge数据捕获于第二个时钟沿0x0001SPI_CPHA_1Edge数据捕获于第一个时钟沿0x0000SPI_NSS:指定了NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理。 Table .02-6 SPI_NSS值SPI_NSS描述/CR1.SSM/bit9SPI_NSS_HardNSS由外部管脚管理0x0000SPI_NSS_Soft内部NSS信号由SSI位控制0x0200SPI_BaudRatePrescaler:用来定义波特率预分频的值,这个值用以设置发送和接收的SCK时钟。 Table.02-7 SPI_BaudRatePrescaler值SPI_BaudRatePrescaler描述/CR1.BR2:0bit5-4SPI_BaudRatePrescaler2波特率预分频值为20x0000SPI_BaudRatePrescaler4波特率预分频值为40x0008SPI_BaudRatePrescaler8波特率预分频值为80x0010SPI_BaudRatePrescaler16波特率预分频值为160x0018SPI_BaudRatePrescaler32波特率预分频值为320x0020SPI_BaudRatePrescaler64波特率预分频值为640x0028SPI_BaudRatePrescaler128波特率预分频值为1280x0030SPI_BaudRatePrescaler256波特率预分频值为2560x0038 注意:通讯时钟由主SPI的时钟分频而得,不需要设置从SPI的时钟。SPI_FirstBit:指定了数据传输从MSB位还是LSB位开始。 Table.02-8 SPI_FirstBit值SPI_FirstBit描述/CR1. LSBFIRSTbit7SPI_FisrtBit_MSB数据传输从MSB位开始0x0000SPI_FisrtBit_LSB数据传输从LSB位开始0x0080SPI_CRCPolynomial:定义了用于CRC值计算的多项式:= 0x1。 例: /* Initialize the SPI1 according to the SPI_InitStructure members */SPI_InitTypeDef SPI_InitStructure; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DatSize = SPI_DatSize_16b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); 函数原型如下:void SPI_Init(SPI_TypeDef* SPIx, SPI_InitTypeDef* SPI_InitStruct) u16 tmpreg = 0; /* check the parameters */ assert_param(IS_SPI_ALL_PERIPH(SPIx); /* Check the SPI parameters */ assert_param(IS_SPI_DIRECTION_MODE(SPI_InitStruct-SPI_Direction); assert_param(IS_SPI_MODE(SPI_InitStruct-SPI_Mode); assert_param(IS_SPI_DATASIZE(SPI_InitStruct-SPI_DataSize); assert_param(IS_SPI_CPOL(SPI_InitStruct-SPI_CPOL); assert_param(IS_SPI_CPHA(SPI_InitStruct-SPI_CPHA); assert_param(IS_SPI_NSS(SPI_InitStruct-SPI_NSS); assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_InitStruct-SPI_BaudRatePrescaler); assert_param(IS_SPI_FIRST_BIT(SPI_InitStruct-SPI_FirstBit); assert_param(IS_SPI_CRC_POLYNOMIAL(SPI_InitStruct-SPI_CRCPolynomial);/*- SPIx CR1 Configuration -*/ /* Get the SPIx CR1 value */ tmpreg = SPIx-CR1; /* Clear BIDIMode, BIDIOE, RxONLY, SSM, SSI, LSBFirst, BR, MSTR, CPOL and CPHA bits */ tmpreg &= CR1_CLEAR_Mask;/ 0x3040,CR1除了CRCEN、CRCNEXT、SPE三个控制位,其他都清除。 /* Configure SPIx: direction, NSS management, first transmitted bit, BaudRate prescaler master/salve mode, CPOL and CPHA */ /* Set BIDImode, BIDIOE and RxONLY bits according to SPI_Direction value */ /* Set SSM, SSI and MSTR bits according to SPI_Mode and SPI_NSS values */ /* Set LSBFirst bit according to SPI_FirstBit value */ /* Set BR bits according to SPI_BaudRatePrescaler value */ /* Set CPOL bit according to SPI_CPOL value */ /* Set CPHA bit according to SPI_CPHA value */ tmpreg |= (u16)(u32)SPI_InitStruct-SPI_Direction | SPI_InitStruct-SPI_Mode | SPI_InitStruct-SPI_DataSize | SPI_InitStruct-SPI_CPOL | SPI_InitStruct-SPI_CPHA | SPI_InitStruct-SPI_NSS | SPI_InitStruct-SPI_BaudRatePrescaler | SPI_InitStruct-SPI_FirstBit); /* Write to SPIx CR1 */ SPIx-CR1 = tmpreg; /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */ SPIx-I2SCFGR &= SPI_Mode_Select;/ 0xF7FF,bit11:I2SMOD( 0-SPI;1-I2S )/*- SPIx CRCPOLY Configuration -*/ /* Write to SPIx CRCPOLY */ SPIx-CRCPR = SPI_InitStruct-SPI_CRCPolynomial;/*【03】函数I2S_Init* Function Name : I2S_Init* Description : Initializes the SPIx peripheral according to the specified * parameters in the I2S_InitStruct.* Input : - SPIx: where x can be 2 or 3 to select the SPI peripheral* (configured in I2S mode).* - I2S_InitStruct: pointer to an I2S_InitTypeDef structure that* contains the configuration information for the specified* SPI peripheral configured in I2S mode.* Output : None* Return : None*/结构体I2S_InitTypeDef定义如下:typedef struct u16 I2S_Mode; u16 I2S_Standard; u16 I2S_DataFormat; u16 I2S_MCLKOutput; u16 I2S_AudioFreq; u16 I2S_CPOL;I2S_InitTypeDef;1、I2S_Mode: Table.03-1 I2S模式设置,设置主/从模式的发送/接收。I2S_Mode意义/I2SCFGR.bit9-8#define ValI2S_Mode_SlaveTx从模式发送0x0000I2S_Mode_SlaveRx从模式接收0x0100I2S_Mode_MasterTx主模式发送0x0200I2S_Mode_MasterRx主模式接收0x03002、I2S_Standard:I2S标准选择 Table.03-2 I2S 标准选择值如下表I2S_Standard意义/I2SCFGR#define单位或组合意义I2S_Standard_PhillipsI2S飞利浦标准0x0000bit5-4 = I2SSTD =0b00I2S_Standard_MSB左对齐标准0x0010bit5-4 = I2SSTD =0b01I2S_Standard_LSB右对齐标准0x0020bit5-4 = I2SSTD =0b10I2S_Standard_PCMShortPCM模式下的短帧同步0x0030I2SSTD=11(bit5-4/PCM标准)下,PMCSYNC(bit7)才有意义:0-短帧同步,1-短帧同步I2S_Standard_PCMLongPCM模式下的长帧同步0x00B03、I2S_DataFormat:设定通道数据长度值 Table.03-3通道数据长度I2S_DataFormat意义/I2SCFGR#define单位或组合意义I2S_DataFormat_16b待传输数据长度16位0x0000bit0(CHLEN)=0:通道数据长度固定为16位。 bit2-1(DATLEN)为任何值都是16位数据。bit0=1(32位位宽): bit2-1=0016位扩展数据 bit2-1=0124位数据 bit2-1=1032位数据 bit2-1=11保留I2S_DataFormat_16bextended待传输数据长度扩展16位0x0001I2S_DataFormat_24b待传输数据长度24位0x0003I2S_DataFormat_32b待传输数据长度32位0x0005 上述“扩展16位”、“24位”、“32位”表示数据以32位包的形式传输。由CHLEN = 1(32位包)决定。对于“扩展16位”,数据16位放在32位包的MSB处,后16位LSB强制位0填充;对于“24位”、“32位”,放在MSB除,LSB也强制填充为0,发送时分2次发送。4、I2S_MCLKOutput:主设备时钟输出使能 Table.03-4主设备时钟输出使能I2S_MCLKOutput意义/I2SPR.bit9#defineI2S_MCLKOutput_Enable使能主设备时钟输出0x0200I2S_MCLKOutput_Disable关闭主设备时钟输出0x00005、I2S_AudioFreq:从定义的音频通道采样频率计算出I2SDIV7:0的值。 Table.03-5音频通道采样频率I2S_AudioFreq意义:实际目标值Fs目标频率值获取I2SDIV值的方法I2S_AudioFreq_48k通道数据频率48KHz(u16)48000I2S的音频采样频率Fs:通过RCC_GetClocksFreq()获取系统时间,然后根据I2SPR的ODD位及I2SDIV位,计算出填入I2SDIV7:0内的线性分频值。而不是直接把“目标频率值”直接填入I2SDIV7:0内。同时I2SDIV的最终值,要受MCKOE控制。I2S_AudioFreq_44k通道数据频率44.1KHz(u16)44100I2S_AudioFreq_22k通道数据频率22.05KHz(u16)22050I2S_AudioFreq_16k通道数据频率16KHz(u16)16000I2S_AudioFreq_8k通道数据频率8KHz(u16)8000I2S_AudioFreq_Default通道数据频率2Hz(u16)2 下图是I2S时钟发生器的结构图 线性分频器需要按照以下的公式来设置,以获得需要的频率: 1、当需要生成主时钟时(寄存器SPI-I2SPR的MCKOE =1) : A、声道的帧长为16位时,Fs = I2SxCLK / (16*2) * (2*I2SDIV) + ODD)*8 B、声道的帧长为32位时,Fs = I2SxCLK / (32*2) * (2*I2SDIV) + ODD)*4 即:在MCKOE=1时,不管声道帧长为16位或32或,固定Fs= I2SxCLK / 256 * (2*I2SDIV) + ODD)2、当关闭主时钟时(MCKOE =0) : A、声道的帧长为16位时,Fs = I2SxCLK / (16*2) * (2*I2SDIV) + ODD) B、声道的帧长为32位时,Fs = I2SxCLK / (32*2) * (2*I2SDIV) + ODD)上述 1、I2SxCLK 的时钟源是系统时钟(即驱动AHB时钟的HSI、HSE或PLL )2、第一个“2”表示左右声道;3、“(2*I2SDIV) + ODD”表示I2SPR内bit8-0控制关系;4、“16”或“32”表示帧长度,指的是I2SCFGR.CHLEN控制下的位宽;5、“8”或“4”表示“I2S主时钟可以输出到外部音频设备,比率固定为256*Fs”模式下的256对齐系数。6、Fs = 音频通道采样频率(参看I2S_AudioFreq取值);7、I2SxCLK为I2Sx的外设时钟。而:I2S 的比特率即确定了在I2S 数据线上的数据流和I2S的时钟信号频率。 I2S比特率 = 每个声道的比特数 声道数目 音频采样频率对于一个左右声道,16位音频,I2S比特率计算为:I2S 比特率 = 16 2 Fs 如果包长为32位,则有:I2S 比特率 = 32 2 Fs6、I2S_CPOL:I2S静止态时钟极性:为高电平还是位低电平。 Table.03-6 空闲状态下,时钟的电平取值I2S_CPOL描述/I2SCFGR.bit3#defineI2S_CPOL_LowI2S时钟静止态为低电平(u16)0x0000)I2S_CPOL_HighI2S时钟静止态为高电平(u16)0x0008)在调用本函数之前,必须对上述结构体成员进行数据初始化设置。函数原型如下:void I2S_Init(SPI_TypeDef* SPIx, I2S_InitTypeDef* I2S_InitStruct) u16 tmpreg = 0, i2sdiv = 2, i2sodd = 0, packetlength = 1; u32 tmp = 0; RCC_ClocksTypeDef RCC_Clocks; /* Check the I2S parameters */ assert_param(IS_SPI_23_PERIPH(SPIx); assert_param(IS_I2S_MODE(I2S_InitStruct-I2S_Mode); assert_param(IS_I2S_STANDARD(I2S_InitStruct-I2S_Standard); assert_param(IS_I2S_DATA_FORMAT(I2S_InitStruct-I2S_DataFormat); assert_param(IS_I2S_MCLK_OUTPUT(I2S_InitStruct-I2S_MCLKOutput); assert_param(IS_I2S_AUDIO_FREQ(I2S_InitStruct-I2S_AudioFreq); assert_param(IS_I2S_CPOL(I2S_InitStruct-I2S_CPOL); /*- SPIx I2SCFGR & I2SPR Configuration -*/ /* Clear I2SMOD, I2SE, I2SCFG, PCMSYNC, I2SSTD, CKPOL, DATLEN and CHLEN bits */全配置 SPIx-I2SCFGR &= I2SCFGR_CLEAR_Mask; /0xF040/Bit6、Bit12-15为保留位,不改变,保持为0;/备注:凡Mask直接清0寄存器位,保留位对应的Mask值一律保持为1,以保证不改变原0值状态。 SPIx-I2SPR = 0x0002; /* Get the I2SCFGR register value */ tmpreg = SPIx-I2SCFGR; /* If the default value has to be written, reinitialize i2sdiv and i2sodd*/ if(I2S_InitStruct-I2S_AudioFreq = I2S_AudioFreq_Default)/缺省频率为2Hz i2sodd = (u16)0;/偶系数:Freq = i2sdiv*2。如果设置为1(奇系数),则Freq = i2sdiv*2+1 i2sdiv = (u16)2; /2分频值,结合上句,则实际时钟为2*2=4分频。 /* If the requested audio frequency is not the default, compute the prescaler */ else /* Check the frame length (For the Prescaler computing) */ if(I2S_InitStruct-I2S_DataFormat = I2S_DataFormat_16b)/通道位宽16位 /* Packet length is 16 bits */ packetlength = 1;/包长为1表示16位。此时,CHLEN = 0。 else/扩展16位?24位?32位? /* Packet length is 32 bits */ packetlength = 2; /包长为2表示32位。此时,CHLEN = 1。包长这里起到控制程序作用。 /* Get System Clock frequency */ RCC_GetClocksFreq(&RCC_Clocks);/来源于SYSCLK(AHB)HSI? PLLCLK? HSE? /* Compute the Real divider depending on the MCLK output state with a flaoting point */ if(I2S_InitStruct-I2S_MCLKOutput = I2S_MCLKOutput_Enable)/MCKOE = 1 /* MCLK output is enabled */ tmp = (u16)(10 * RCC_Clocks.SYSCLK_Frequency) / (256 * I2S_InitStruct-I2S_AudioFreq) + 5); / RCC_Clocks.SYSCLK_Frequency = HSI或HSE或PLLCLK = 8M、16M、24M、48M、72M。 else/MCKOE = 0 /* MCLK output is disabled */ tmp = (u16)(10 * RCC_Clocks.SYSCLK_Frequency) / (32 * packetlength * I2S_InitStruct-I2S_AudioFreq) + 5);/ packetlength* AudioFreq = I2S 比特率。 /* Remove the flaoting point */tmp = tmp/10;/*10、 +5、/10,以保证tmp取值为四舍五入。 /仅在(MCKOE = 1)8M时钟 48K、44.1K、22.05K取值,/ 16M时钟 48K、44.1K取值下,tmp = 1,其他取值都能保证=2。 /* Check the parity of the divider */ i2sodd = (u16)(tmp & (u16)0x0001);/获取分频系数的奇偶性(LSB)。 /* Compute the i2sdiv prescaler */ i2sdiv = (u16)(tmp - i2sodd) / 2);/去除奇偶性后的分频值,即去掉LSB。 /* Get the Mask for the Odd bit (SPI_I2SPR8) register */ i2sodd = (u16) (i2sodd 8);/把决定奇偶性的LSB位左移8位,用于控制I2SPR.ODD位。 /* Test if the divider is 1 or 0 */ if (i2sdiv 0xFF) /* Set the default values */ i2sdiv = 2; i2sodd = 0; /如果分频系数小于2或大于0xFF,都把分频系数设置为:Default、偶分频。 /* Write to SPIx I2SPR register the computed value */ SPIx-I2SPR = (u16)(i2sdiv | i2sodd | I2S_InitStruct-I2S_MCLKOutput); /* Configure the I2S with the SPI_InitStruct values */ tmpreg |= (u16)(I2S_Mode_Select | I2S_InitStruct-I2S_Mode | I2S_InitStruct-I2S_Standard | I2S_InitStruct-I2S_DataFormat | I2S_InitStruct-I2S_CPOL); /* Write to SPIx I2SCFGR */ SPIx-I2SCFGR = tmpreg; 被调用函数RCC_GetClocksFreq(&RCC_Clocks);如下/*【04】函数SPI_StructInit* Function Name : SPI_StructInit* Description : Fills each SPI_InitStruct member with its default value.* Input : - SPI_InitStruct : pointer to a SPI_InitTypeDef structure* which will be initialized.* Output : None* Return : None*/Table 420. 给出了SPI_InitStruct各个成员的缺省值 Table.04-1 SPI_InitStruct缺省值成员缺省值SPI_DirectionSPI_Direction_2Lines_FullDuplexSPI_ModeSPI_Mode_SlaveSPI_DataSizeSPI_DataSize_8bSPI_CPOLSPI_CPOL_LowSPI_CPHASPI_CPHA_1EdgeSPI_NSSSPI_NSS_HardSPI_BaudRatePrescalerSPI_BaudRatePrescaler_2SPI_FirstBitSPI_FirstBit_MSBSPI_CRCPolynomial7 结构体I2S_InitTypeDef定义如下:typedef struct u16 I2S_Mode; u16 I2S_Standard; u16 I2S_DataFormat; u16 I2S_MCLKOutput; u16 I2S_AudioFreq; u16 I2S_CPOL;I2S_InitTypeDef;例: /* Initialize an SPI_InitTypeDef structure */ SPI_InitTypeDef SPI_InitStructure; SPI_StructInit(&SPI_InitStructure); 函数原型如下:void SPI_StructInit(SPI_InitTypeDef* SPI_InitStruct)/*- Reset SPI init structure parameters values -*/ /* Initialize the SPI_Direction member */ SPI_InitStruct-SPI_Direction = SPI_Directi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论