喜欢0次
int32_t spi_start_transaction(SPI_TypeDef *spi, uint32_t trans_type, uint32_t csnum) {
if (__RARELY(spi == NULL)) {
return -1;
}
spi->STATUS = ((1 << (csnum + 8)) & 0xF00) | ((1 << trans_type) & 0xFF);
return 0;
}
下面的写数据通过spi_start_transaction(SPI1, SPI_CMD_WR, SPI_CSN0)把片选置1启用片选。
但我通过示波器观察在发完一个数据片选会被拉高,它在哪配置的?我想一直拉低应该可以怎么操作。
void SPI_WR_DATA8(uint8_t data)
{
uint32_t wdata = ((uint32_t) data) << 24;
spi_set_datalen(SPI1, 8);
spi_write_fifo(SPI1, &wdata, 8);
spi_start_transaction(SPI1, SPI_CMD_WR, SPI_CSN0);
while ((spi_get_status(SPI1) & 0xFFFF) != 1);
}