中级会员
 
- 积分
- 312
- 金钱
- 312
- 注册时间
- 2013-6-26
- 在线时间
- 0 小时
|

楼主 |
发表于 2013-8-21 16:49:01
|
显示全部楼层
楼主我现在把主从板断开了,先去看看主机板到底有没有发出什么东西来。通过示波器查看SCK和MOSI(事实上楼主已经连主从机全都设置为内部软件管理了(SPI_NSS_Soft),根据我对文档说明的理解,这时主从机都不需要外部NSS,完全由程序决定主从模式。所以实际上主从板的连接只有4条线:VCC GND MOSI SCK。
言归正传,断开后,查看主机的MOSI SCK,通过示波器,至少能看到波形,尽管我必须多按几次按键才能在示波器上看到。波形分析与程序配置相符。附:CPOL可以决定SCK空闲时的状态,即高低电平,而从示波器波形得出个人结论,MOSI在空闲时状态与最后发送字节有关,如在:
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
下,当发送0x01,则MOSI最后电平为高,发0x02,则最后电平为低。尽管这个结论没什么用。。。。
问题是,再连上后,从机还是没反应。呵呵呵呵呵呵呵呵(哭了)
附从机配置:
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_RxOnly;
SPI_InitStructure.SPI_Mode =SPI_Mode_Slave ;
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_128; //据说这个没用,还是配成和主机一样 36M/128
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI2, &SPI_InitStructure);
SPI_CalculateCRC(SPI2,DISABLE);//顺便失能CRC
附主机配置:
SPI_InitTypeDef SPI_InitStructure;
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; //72M/256
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI1, &SPI_InitStructure); |
|