想请问一下我对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);
}
是我设定有问题 还是认知上有问题 麻煩請各位高手回答一下 |
|