27,374
社区成员
发帖
与我相关
我的任务
分享
/*
* 函数名:SPI3_Init
* 描述 :初始化SPI3端口及基模式,用于操作AD8400可调电阻
* 输入 :无
* 输出 : 无
* 调用 :外部调用
*/
void SPI3_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable SPI3 and GPIOC Clocks */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);//SPI3在APB1总线上
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //CS片选
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//通用推挽输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* Configure SPI3 pins: SCK, MISO and MOSI 可调电阻AD8400的MISO接口没有用到*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//复用引脚功能
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* SPI3 configuration */
SPI_Cmd(SPI3, DISABLE);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;//全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;//主模式
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;//8位数据宽度 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;//时钟极性,配置为SPI空闲时SCK为低电平
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;//时钟相位,奇数沿边采样
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//软件控制片选 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;//预分频值 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//低地址存放最高有效字节 SPI_InitStructure.SPI_CRCPolynomial = 7;//校验多项式
SPI_Init(SPI3, &SPI_InitStructure);
SPI_AD8400_CS_HIGH();//初始时先将片选拉高
/* Enable SPI3 使能SPI3*/
SPI_Cmd(SPI3, ENABLE);
}