void SPI_Initial( void ) { //Set as default SPI_DeInit( ); //Set the priority of the SPI SPI_Init(); //Config the GPIOs for SPI bus SPI_GPIO_Init(); } void SPI_DeInit(void) { SPI1_CR1 = 0x00; SPI1_CR2 = 0x00; SPI1_ICR = 0x00; SPI1_SR = 0x02; } void SPI_Init(void) { SYSCFG_RMPCR1 |= 0x80; //选择复用SPI接口为PA2,PA3,PC5 SPI1_CR1 = 0x00; //先发送MSB,波特率000,SCK空闲为低,数据采样第一个时钟边沿开始 SPI1_CR2 = 0x03; SPI1_CR1 |= 0x40; //启动SPI总线 SPI1_CRCPR = 0x07; SPI1_CR1 |= 0x40; } void SPI_GPIO_Init(void) { PA_DDR |= ~(1<<MISO); PA_CR1 |= ~(1<<MISO); PA_CR2 |= ~(1<<MISO); //设置PA2,复用MISO时为悬浮输入 PA_DDR |= (1<<MOSI); PA_CR1 |= (1<<MOSI); PA_CR2 |= (1<<MOSI); //设置PA3,复用MOSI时为推挽输出 PC_DDR |= (1<<SCK); PC_CR1 |= (1<<SCK); PC_CR2 |= (1<<SCK); //设置PC6,复用SCK时为推挽输出 PC_DDR |= (1<<CSN); PC_CR1 |= (1<<CSN); PC_CR2 |= (1<<CSN); //设置PC5,复用CSN时为推挽输出 } #define MISO 2 #define MOSI 3 #define SCK 6 #define CSN 5 以上是我初始化SPI的程序,参考了官方的例程修改的,但是调试一直通不过,SPI没有输出 |
STM8AF系列可以通过Flash Loader Demonstrator用lin总线刷写程序吗
STM8S003F3U6 请求各位大佬支援,但是遇到如下问题。。。这样就一定是这颗芯片的问题吗?
STVD如何生成库文件
STM8 flash 库函数 startaddress = startaddress + ((uint32_t)BlockNum * FLASH_BLOCK_S
stm 8 flash 在RAM运行代码的问题,是不是库函数有问题 Library call (?sll32_l0_l0_a) from within a
STM 有能替代MCHC912B32CFUE8 / NXP的型号吗?
STM8S的CAN总线使用
STM8L151在使用DAC功能后严重发热
STM8 IIC SLAVE 400K
STM8S 定时器1互补输出pwm
STM8S系列里确实有,可以在STVP里设置,但是STM8L其他的我不知道,但是STM8L051的没有可以设置的选项
还有,SPI外设的时钟要手动开启的哦,默认是关闭的。
CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
GPIO_Init(GPIOB, GPIO_Pin_4, GPIO_Mode_Out_PP_High_Fast); //NSS片选
GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast); //SCK
GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast); //MOSI
//主机模式,配置为输入
GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT); //MISO
BSP1_RFID_PowerOn(); //给RC522芯片上电
//BSP1_RFID_PowerOff();
SPI_DeInit(SPI1);
SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_8, SPI_Mode_Master,SPI_CPOL_Low, SPI_CPHA_1Edge,SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
//SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_128, SPI_Mode_Master,SPI_CPOL_High, SPI_CPHA_2Edge,SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
SPI_Cmd(SPI1, ENABLE); /* 使能SPI */
rv = BSP1_RFID_Reset(&ctrl_reg, &ver_reg); //和PcdReset库函数一模一样
printf("ctrl_reg:%02X, ver_reg:%02X\r\n", ctrl_reg, ver_reg);
if (rv != 0)
{
printf("rfid init error\r\n");
}
BSP_RFID_AntennaOff();
delay_ms(1);
BSP_RFID_AntennaOn();
BSP_RFID_ConfigISOType('A'); //针对ISO14443A型卡进行初始化