查看: 71|回复: 0

SPI1的接收问题

[复制链接]

1

主题

2

帖子

39

积分

初级工程师

Rank: 1

积分
39
发表于 2024-10-30 15:15:11 | 显示全部楼层 |阅读模式
void bsp_spi_init()
{
        FL_GPIO_InitTypeDef gpio;
        FL_SPI_InitTypeDef spi;
       
        gpio.pin = FL_GPIO_PIN_8;
        gpio.mode = FL_GPIO_MODE_OUTPUT;
        gpio.outputType = FL_GPIO_OUTPUT_PUSHPULL;
        gpio.pull = FL_ENABLE;
        gpio.remapPin = FL_DISABLE;
        FL_GPIO_Init(GPIOB, &gpio);    //nss
        FL_GPIO_SetOutputPin(GPIOB, FL_GPIO_PIN_8);
       
        gpio.pin = FL_GPIO_PIN_9 | FL_GPIO_PIN_10 | FL_GPIO_PIN_11;
        gpio.mode = FL_GPIO_MODE_DIGITAL;
        gpio.outputType = FL_GPIO_OUTPUT_PUSHPULL;
        gpio.pull = FL_DISABLE;
        gpio.remapPin = FL_DISABLE;
        FL_GPIO_Init(GPIOB, &gpio);
       
        spi.transferMode = FL_SPI_TRANSFER_MODE_FULL_DUPLEX;
        spi.mode = FL_SPI_WORK_MODE_MASTER;
        spi.dataWidth = FL_SPI_DATA_WIDTH_8B;
        spi.clockPolarity = FL_SPI_POLARITY_NORMAL;
        spi.clockPhase = FL_SPI_PHASE_EDGE1;
        spi.softControl = FL_DISABLE;
        spi.baudRate = FL_SPI_BAUDRATE_DIV8;
        spi.bitOrder = FL_SPI_BIT_ORDER_MSB_FIRST;
       
        FL_SPI_ClearTXBuff(SPI1);
        FL_SPI_ClearRXBuff(SPI1);
       
        FL_SPI_Init(SPI1, &spi);
}

uint8_t bsp_spi_write_read_byte(uint8_t data)
{
        FL_SPI_WriteTXBuff(SPI1, data);
       

       
        while(!(FL_SPI_IsActiveFlag_TXBuffEmpty(SPI1)));

        while(!(FL_SPI_IsActiveFlag_RXBuffFull(SPI1)));

        data = FL_SPI_ReadRXBuff(SPI1);
       
        return data;
}

接收到的数据都是0XFF,这是正常的吗,但是可以正常写,写的波形也正常,但是到读好像就有问题,感觉是SPI1有问题,有其他人说用SPI2可以正常,不太清除,不知道问题在哪里?

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表