单片机学习小组
直播中

李继明

7年用户 1089经验值
私信 关注

M031 SPI如何使用软件NSS?

M031使用SPI,在初始化时只需两个函数即可

    /* Set IP clock divider. SPI clock rate = 2 MHz */
    SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 8, SPI_CLK_FREQ);

    /* Enable the automatic hardware slave select function. Select the SS pin and configure as low-active. */
        SPI_EnableAutoSS(SPI0, SPI_SS, SPI_SS_ACTIVE_LOW);
这种初始化时使用硬件自动NSS,我想使用软件NSS,随便用一个IO口控制输出高低电平来控制主从设备NSS。是否是屏蔽SPI_EnableAutoSS(),使用SPI_DisableAutoSS()便可。




回帖(1)

张虎豹

2023-11-1 10:34:56
可以的。在使用软件NSS时,需要在SPI初始化后调用SPI_DisableAutoSS()来禁用硬件自动NSS功能,并在需要进行NSS操作时,使用GPIO控制相应的NSS引脚输出高低电平。例如:

/* Disable the automatic hardware slave select function. */
SPI_DisableAutoSS(SPI0);

/* Set software NSS control mode. */
SPI_SET_SS0_HIGH(SPI0);

/* Start SPI transfer. */
SPI_WRITE_TX(SPI0, send_data);
while(!SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0));

/* Set NSS pin to low. */
GPIO_SET_MODE(PB, BIT5, GPIO_MODE_OUTPUT);
GPIO_CLR_PIN(PB, BIT5);

/* Start SPI transfer with NSS controlled by software. */
SPI_SET_SS0_LOW(SPI0);
SPI_WRITE_TX(SPI0, send_data);
while(!SPI_GET_TX_FIFO_EMPTY_FLAG(SPI0));

/* Set NSS pin to high. */
SPI_SET_SS0_HIGH(SPI0);
GPIO_SET_PIN(PB, BIT5);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分