各位大神,先说一下我做的东西,AD采集,然后通过SPI数据传输,最后给EtherCat传输给上位机。EtherCat用的是倍福公司的FB1111板载卡控制器,它与单片机的硬件连接是通过SPI连接的。现在问题就是我没接上这个板载卡前SPI传出来的数经过测试之后是对的,而加上这个板载卡之后数据传输就出错了,我的EtherCat板载卡模块和AD采集的传输都是用的SPI3,是总线数据冲突了还是时序问题吗?菜鸟求原子老师解答。SPI3的配置如下。
[mw_shl_code=c,true]void HW_init(void)
{
uint32_t Ecat_counter = 0;
GPIO_InitTypeDef GPIO_InitStructure;
SPI_InitTypeDef SPI_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3 , ENABLE );
GPIO_PinRemapConfig(GPIO_Remap_SPI3, ENABLE);
/* FB1111板载卡SPI3配置*/ [/mw_shl_code]
[mw_shl_code=c,true] 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);
/*片选信号 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_SetBits(GPIOD, GPIO_Pin_2);
/*SPI3配置*/
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; /*???????ò?????¤????*/
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; /*?÷SPI????*/
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; /*?????ó??8b*/
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; /*????×????±??SCK±?????????*/
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; /*???????ù?????????±??±???????*/
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; /*????NSS??????SSI??????*/
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; /*?¨?????¤·?????128*/
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; /*??????????MSB????*/
SPI_Init(SPI3, &SPI_InitStructure);
SPI_Cmd(SPI3, ENABLE); /*????SPI3*/
/*FB111板载卡EEPROM_Loaded配置 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOB, &GPIO_InitStructure);
/*查询EEPROM_Loaded状态 高有效 为高则FB1111板载卡可访问*/ EtherCAT_status = 0 ;
EtherCAT_status = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14);
do
{
EtherCAT_status = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14);
Ecat_counter++;
}while((EtherCAT_status == 0)&&(Ecat_counter != Ecat_startup_timeout));
}[/mw_shl_code]
|