STM32VCT6的SPI3通信
void Spi_Configuration(void){
SPI_InitTypeDefSPI_InitStructure;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//设置SPI单向或者双向的数据模式:SPI设置为双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //设置SPI工作模式:设置为主SPI
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //设置SPI的数据大小:SPI发送接收8位帧结构
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; //串行同步时钟的空闲状态为高电平或者低电平
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //数据捕获于第二个时钟沿
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //NSS信号由硬件(NSS管脚)还是软件(使用SSI位)管理:内部NSS信号有SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; //定义波特率预分频的值:波特率预分频值为16
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //指定数据传输从MSB位还是LSB位开始:数据传输从MSB位开始
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC值计算的多项式
SPI_Init(SPI3, &SPI_InitStructure);//根据SPI_InitStruct中指定的参数初始化外设SPIx寄存器
SPI_Cmd(SPI3, ENABLE); //使能SPI外设
SPI3_ReadWriteByte(0xff);//启动传输
}
IO初始化
RCC->APB2ENR |= 0x00000001;//禁用JTAG,开启SWD
AFIO->MAPR = (0x00FFFFFF & AFIO->MAPR)|0x02000000;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure); //MISO
GPIO_SetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_5);//PB3/4/5上拉
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
开启时钟
//下面是给各模块开启时钟
//启动GPIO ,AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO , ENABLE);
//SPI3时钟使能
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3,ENABLE);
我通过SPI与F-RAM通信只能看见发送的波形,看不到接收的波形,正常情况下主机控制时序,那么当主机发送完指令后,时钟信号在接收过程中是显示还是不显示,是只有接收到数据才有时钟信号吗?F-RAM是在上升沿读取数据的,现在就是接收不到数据,我用这几个引脚进行模拟SPI通信时可以的,发送的,正常通信的数据的时钟比不正常的慢了半个周期???
MCU作为主SPI?有波形出来,然后从机没有波形发输出来?看一下SPI的时序是否都得上从机的。。。然后就是从机是否工作等等!!! 不知道对不对啊,反正在STM32F10X的固件库中,SPI的三个IO管脚都是设置的GPIO_Mode_AF_PP模式,片选信号为GPIO_Mode_Out_PP模式。
页:
[1]