QSPI-Flash ==> DMA-P2P ==> TFT彩屏 / i8080-8位并口 只能启动一次
现象就是使用QSPI的DMA-P2P将数据读出到LCM就不行。第一次可有读出数据。我自己发现他死在了QSPI_CheckBusy() 这个语句 ,QSPI_SR1的值是0x38 ,bti5 查询手册以后发现其应该是在完成后自动清零才对。实际并没有清零,加延时并没有作用
爱吃鱼苗 发表于 2025-5-17 00:13
我自己发现他死在了QSPI_CheckBusy() 这个语句 ,QSPI_SR1的值是0x38 ,bti5 查询手册以后发现其应该是在 ...
有以下8个函数调用了QSPI_CheckBusy,卡在哪里?
QSPI_Inilize
QSPI_ReadData_DMA_to_LCM
QSPI_READ_INSTR_SDATA
QSPI_WRITE_INSTR
QSPI_WRITE_INSTR_SADDR8
QSPI_READ_INSTR_SADDR24_DUMMY_QDATA
QSPI_WRITE_INSTR_SADDR24
QSPI_WRITE_INSTR_SADDR24_QDATA 爱吃鱼苗 发表于 2025-5-15 23:36
hqspi.Init.ClockPrescaler = 2;程序里的分频系数是3 改2不是变快了吗,但是改成20 又不行了
...
找不到“hqspi.Init.ClockPrescaler”
DebugLab 发表于 2025-5-18 17:41
有以下8个函数调用了QSPI_CheckBusy,卡在哪里?
QSPI_Inilize
QSPI_ReadData_DMA_to_LCM
QSPI_ReadData_DMA_to_LCM这个函数 调用了第二次就卡住了
爱吃鱼苗 发表于 2025-5-15 23:36
hqspi.Init.ClockPrescaler = 2;程序里的分频系数是3 改2不是变快了吗,但是改成20 又不行了
...
这个是ai工具提示的的查找方向,我自己根据提示修改的是初始化里:QSPI_InitStructure.ClockDiv = 3; //设置QSPI时钟 = 系统时钟/(n+1), 0~255
这个参数还是卡住
我之前的提问描述有些问题,给人有些模糊,我主要的问题是qspi的DMA-P2P将数据读出到clm里去 ,当我第二次调用QSPI_ReadData_DMA_to_LCM这个函数时我死在了 QSPI_CheckBusy()语句,这个语句其实就是检查了QSPI_SR1的值是,我打印出来的结果是0x38,我不清楚的是程序设置不对还是硬件问题,因为我单独调qpis的dma功能将数据读到xdata区是能够显示正常的图片的,说明硬件连线是没有问题的,P2P和qspi的dma两个都是dma功能使用了P2P功能就只能掉用一次,所以我更偏向软件的P2P设置问题。{:4_188:}{:4_188:}没弄过这个求大佬解惑。拜托了。 (图片的flash 的数据提前写入的,通过果qspi的dma将数组的数据写入的) 你这程序是移植部分例程代码编写的?
建议直接在AI8051U实验箱例程包 QSPI P2P LCM 的例子上修改你需要使用的脚位通道试试。
例程下载地址:https://www.stcai.com/syx
我将代码的QSPI P2P LCM dma余数部分注释了就可以了是为什么呀一定要是整数倍吗,任意的大小不可以吗,如果可以的话要怎么设置
爱吃鱼苗 发表于 2025-5-22 20:59
我将代码的QSPI P2P LCM dma余数部分注释了就可以了是为什么呀一定要是整数倍吗,任意的大小不可以吗,如 ...
在这一段代码注释以后重新使用lcm 的dam将xdata的传入时第一次进入中断前的数据是不对的像是qspi传输的最后一段数据。