想请问一下我对SPI的认知不是很多,看完介绍后发现他有的主从模式,目前我使用STM8L151C6,我现在设定成主模式是可以从PB6输入(MOSI),程式如下: #include "stm8l15x.h" void CLK_Config(void); void GPIO_Config(void); void SPI_Config(void); main() { CLK_Config(); GPIO_Config(); SPI_Config(); SPI_SendData(SPI1,0x5A); while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET) { } SPI_count++; GPIO_Config(); for(;;) { } } void CLK_Config(void) { CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,ENABLE); while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE) { } } void GPIO_Config(void) { GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_In_FL_No_IT); } void SPI_Config(void) { SPI_Init(SPI1,SPI_FirstBit_MSB,SPI_BaudRatePrescaler_256,SPI_Mode_Master,SPI_CPOL_Low,SPI_CPHA_1Edge,SPI_Direction_Tx,SPI_NSS_Soft,(u8)0x06); SPI_Cmd(SPI1,ENABLE); SPI_ITConfig(SPI1,SPI_IT_TXE,ENABLE); } 但我把他设定程从模式他不会从于PB7(MISO)output,程式如下: #include "stm8l15x.h" void CLK_Config(void); void GPIO_Config(void); void SPI_Config(void); main() { CLK_Config(); GPIO_Config(); SPI_Config(); SPI_SendData(SPI1,0x5A); while(SPI_GetFlagStatus(SPI1,SPI_FLAG_TXE)==RESET) { } SPI_count++; GPIO_Config(); for(;;) { } } void CLK_Config(void) { CLK_SYSCLKSourceSwitchCmd(ENABLE); CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE); CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1); CLK_PeripheralClockConfig(CLK_Peripheral_SPI1,ENABLE); while(CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSE) { } } void GPIO_Config(void) { GPIO_Init(GPIOB,GPIO_Pin_7,GPIO_Mode_Out_PP_Low_Slow); GPIO_Init(GPIOB,GPIO_Pin_6,GPIO_Mode_In_FL_No_IT); GPIO_Init(GPIOB,GPIO_Pin_5,GPIO_Mode_Out_PP_Low_Slow);} void SPI_Config(void) { SPI_Init(SPI1,SPI_FirstBit_MSB,SPI_BaudRatePrescaler_256,SPI_Mode_Slave,SPI_CPOL_Low,SPI_CPHA_1Edge,SPI_Direction_Tx,SPI_NSS_Soft,(u8)0x06); SPI_Cmd(SPI1,ENABLE); SPI_ITConfig(SPI1,SPI_IT_TXE,ENABLE); } 是我设定有问题 还是认知上有问题 麻煩請各位高手回答一下 |
RE:关于SPI的疑问?