Firmware for Generic Bluetooth SDK(AC63 series), Support AC631N/AC635N/AC636N/AC637N/AC632N, compatible with AC69 series without audio support.
167
stars
97
forks
source link
AC6321 硬件SPI不能正常工作,驱动0.96英寸OLED液晶屏异常 #201
Open
fighter919 opened 1 year ago
使用硬件SPI发送数据时,3条控制线信号线钟SCLK和CS有信号波形,SDA无控制信号输出。SPI 发送数据主要调用 spi_send_byte和spi_dma_send这两个函数,无论使用哪一个都是异常。spi.c文件中没有调整极性和相位的参数,感觉被屏蔽掉的枚举模式变量/*enum spi_mode才是有用的,现有的模式不适用于液晶屏类SPI只发送,不接受的场景,请厂家优化改善,谢谢!
/*
@return 0 成功,< 0 失败 */ int spi_send_byte(spi_dev spi, u8 byte) { u8 id = spi_get_info_id(spi);
spi_dir_out(spi_regs[id]); spi_w_reg_buf(spi_regs[id], byte); return __spi_wait_ok(spi, 1); }
/*
@return 实际发送长度,< 0表示失败 / int spi_dma_send(spi_dev spi, const void buf, u32 len) { u8 id = spi_get_info_id(spi);
/ ASSERT((u32)buf % 4 == 0, "spi dma addr need 4-aligned"); / spi_dir_out(spi_regs[id]); spi_w_reg_dma_addr(spi_regs[id], (u32)buf); spi_w_reg_dma_cnt(spi_regs[id], len); asm("csync"); if (__spi_wait_ok(spi, len)) { return -EFAULT; } return len; }
/enum spi_mode { SPI_2WIRE_MODE, SPI_ODD_MODE, SPI_DUAL_MODE, SPI_QUAD_MODE, };/ enum spi_mode { SPI_MODE_BIDIR_1BIT, //支持SPIx(x=0,1,2),全双工,di接收,do发送 SPI_MODE_UNIDIR_1BIT, //支持SPIx(x=0,1,2),半双工,do分时发送/接收 SPI_MODE_UNIDIR_2BIT, //支持SPIx(x=0),半双工,di & do共2bit分时发送/接收 SPI_MODE_UNIDIR_4BIT, //支持SPIx(x=0),半双工,di & do & wp & hold 共4bit分时发送/接收 };