配置及问题列举
1. STM32F030C8T6:48M系统时钟配置;
2. SPI1:驱动LCD,半工主机通讯,极性为高、边沿为2,时钟分频系数16分频;
3. SPI2:驱动TDC-GP21,全工主机通讯,极性为低、边沿为2,时钟分频系数4分频;
1. LCD驱动为上升沿,改为{极性为低、边沿为1},初始化却无效;
2. TDC-GP21驱动为下降沿,读取ID函数,从机回复ID为0(0xB7操作码,后跟七位ID序列);
3. LCD驱动半工通讯,发送字节数据失败,屏幕初始化不成功;
SPI2 驱动 TDC-GP21问题
硬件检查
- 首先检查SCK、MOSI、MISO、CSN硬件连接正常;
SPI逻辑分析仪抓取波形
- 波形时序不对,波形散乱错离;
原因及问题解决
Q: TDC-GP21器件 不支持高SPI时序;
A: SPI增加分频系数,SPI时钟降至3M,TDC-GP21器件时序恢复正常;
SPI1 驱动 LCD问题
硬件检查
- 首先检查SCK、MOSI、MISO、CSN硬件连接正常;
SPI逻辑分析仪抓取波形
- 波形时序不对,字节SCK时钟少位,漏位;
- 字节流传输中每个字节间跨度在14us左右,十分影响速率;
问题解决
Q: SPI单工通讯异常,时序错误,HAL_SPI_Transmit(&hspi1, &TxData,1,HAL_MAX_DELAY);字节间跨度过大;
A: SPI更改为全双工通讯,时序恢复正常;
A: SPI更改为HAL_SPI_TransmitReceive(&hspi1, &TxData, &Rxdata,1,0);函数传输,速率提升;
未解决问题
- TDC-GP21未使能前MISO为高阻态,CSN拉低后MISO被TDC-GP21强制拉低,无法与从机建立通讯;
- (续上)返回ID也是因为从机拒绝访问影响(有解答请联系)。
2023-8-5-14-46补充
- 实测寄存器依然可以正常读写,但ID无法返回(如不需要 暂时无伤大雅);
2023-8-23-09-27补充
- 默认ID为0000所以返回值全为0(困扰很久一直以为通信错误),解决!!;