新手入门
- 积分
- 19
- 金钱
- 19
- 注册时间
- 2020-6-4
- 在线时间
- 4 小时
|
本帖最后由 黑的奶制品 于 2020-12-17 17:16 编辑
使用战舰的开发板,程序是战舰的,用MDK5仿真了一下一个程序的SPI通信,结果只有片选CS可以响应,SPI的时钟SCK却没有变化。
用的SPI2,仿真图情况如图。运行了一条SPI写语句。
小白一个,有没有大佬能帮我看看是什么问题。
这个写函数应该是对的吧:
void SPI_Writebyte32(u32 Dat)
{
unsigned char i;
TDC_SSN(OFF);
//Delay(1);
for (i=0; i<32; i++)
{
TDC_SCK(ON);
//Delay(1);
if (Dat&0x80000000)
TDC_MOSI(ON);
else
TDC_MOSI(OFF);
//Delay(1);
TDC_SCK(OFF);
//Delay(1);
Dat = Dat<<1;
}
//Delay(1);
TDC_SSN(ON);
//Delay(1);
}
SPI2的配置程序如下:
void SPI2_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD , ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE); //SPI2ê±Öóê1Äü
// SPI2_SSN
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;
GPIO_Init(GPIOB, &GPIO_InitStructure); // SPI2 - PB12 SSN
// SPI2_SCK
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOB, &GPIO_InitStructure); // SPI2 - PB13 SCK
// SPI2_MISO
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_Init(GPIOB, &GPIO_InitStructure);// SPI2 - PB14 MISO
// SPI2_MOSI
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_Init(GPIOB, &GPIO_InitStructure); // SPI2 - PB15 MOSI
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
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_256;
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_Cmd(SPI2, ENABLE);
SPI_SSOutputCmd (SPI2,ENABLE);
GPIO_SetBits(GPIOB,GPIO_Pin_12);
GPIO_SetBits(GPIOB,GPIO_Pin_14);
GPIO_SetBits(GPIOB,GPIO_Pin_15);
GPIO_ResetBits(GPIOB,GPIO_Pin_13);
}
|
|