初级会员

- 积分
- 54
- 金钱
- 54
- 注册时间
- 2013-10-16
- 在线时间
- 0 小时
|

楼主 |
发表于 2014-6-6 08:26:17
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
void SPI1_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);
/*SPI引脚配置复用推挽输出PA5-SCK、PA7-MOSI*/
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5|GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*SPI引脚配置上拉输入PA6-MISO*/
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_6;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* SPI引脚配置推挽输出   A4-SPI_NSS */
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* SPI引脚配置浮空输入  A3-DRDY */
GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3; //PA3不设置可能也没问题,复位后处于浮空状态,其电平状态由外围电路决定
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*SPI1模式设置*/
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPI 设置为双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //SPI_Mode_Master
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //SPI 发送接收8 位帧结构
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //时钟空闲为0
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //数据捕获于第二个时钟沿
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //内部NSS 信号有SSI 位控制
SPI_InitStructure.SPI_BaudRatePrescaler =SPI_BaudRatePrescaler_256; //波特率预分频值为256,PLLCLK为56M,此时SPI1为218.75K,注意不能超过18M
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //数据传输从MSB 位开始
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE);
}这是我整个spi的配置,我把上面的等待接收字节注释,以延时1us代替,想试试行不行,读出来1255几个重要寄存器的值也是不对的。1255的晶振已经起振了,如果通信正常的话,是不是用示波器SCK上观察到方波?那MISO,MOSI上会有啥样的波形,才算正常? |
|