本帖最后由 西奥伟 于 2019-2-25 11:46 编辑 MCU:STM32F030C8 外设模块:CR95HF芯片 采用通信协议:SPI通信 问题:使用STM32F030C8型号的MCU,最初将CR95HF的官方的实例库的代码,移植到自己的项目当中来,官方库使用的MCU为STM32F103RB系列的,官方库初始化CPOL=1,CPHA=1 的模式,我按照官方库对比了SPI通信的4个通信引脚的设置分别如下: 官方库: (GPIO复用为SPI1) SCK: PA5---->GPIO_MODE_AF_PP(上拉) MOSI: PA7---->GPIO_MODE_AF_PP(下拉) MISO: PA6---->(上拉) NSS: PB6---->GPIO_MODE_OUTPUT_PP(无上下拉) IRQIN: PA9---->GPIO_MODE_OUTPUT_PP IRQOUT: PA10---->GPIO_MODE_IT_FALLING(上拉) 本人项目: (GPIO复用为SPI2) SCK: PB13--->GPIO_MODE_AF_PP(上拉) MOSI: PB14---->GPIO_MODE_AF_PP(下拉) MISO: PB15----->GPIO_MODE_AF_PP(上拉) NSS: PB12------> GPIO_MODE_OUTPUT_PP(无上下拉) IRQIN: PF7------>GPIO_MODE_OUTPUT_PP(无上下拉) IRQOUT: PB11----->GPIO_MODE_IT_FALLING(上拉) 现在出现问题的现象是:CR95HF模块初始化不成功,假如将MOSI引脚设置为下拉模式,则当使用库函数HAL_SPI_TransmitReceive()向CR95HF模块发送复位命令,接收到的值为0x00。倘若将MOSI引脚设置为上拉模式,则当使用库函数HAL_SPI_TransmitReceive()向CR95HF模块发送复位命令,接收到的值为0xFF。 接收到的数据,不是CR95HF模块正常初始化响应的数据,使用示波器检测CR95HF芯片的晶振是起振了的,示波器打SCK引脚也有方波出现。 |
注意点:、
①stm32硬件SPI的对应组编号SPI1和SPI2、以及SPI的GPIO引脚,需要根据数据手册一一对应。
②SPI1和SPI2挂载的外设时钟APB线不一样,SPI1--》APB2, SPI2--》APB1。
总结:利用示波器测试SPI的SCK引脚,根据SCK引脚是否产生方波,来确定SPI的初始化配置是否成功。
评分
查看全部评分