完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我正在努力让 2 个不同的传感器在 4 通道模式下工作,但我认为可能是 24 位 MIPI 到 GPIF 导致了问题。 我有一个传感器,采用 2 通道 16 位输出配置,工作正常,当我将其切换到 4 通道时,什么也得不到,甚至没有来自 GPIF 回调的错误。 我开始怀疑 24 位模式是否会受到启用其他外围设备的影响 - 我正在使用 I2C 和 UART 和 SPI - 我还使用覆盖函数调用设置了几个备用 GPIO。
主程序中的初始化代码如下 - 我应该启用 32 位总线吗?或者还有其他东西可以停止 24 位? /* 初始化设备 */ CyU3PSysClockConfig_t 时钟配置; 时钟配置.设置SysClk400 = 赛特鲁; 时钟配置.cpuClkDiv = 2; 时钟配置.dmaClkDiv = 2; 时钟配置.mmioClkDiv = 2; clockConfig.useStandbyClk =CyFalse; 时钟配置.clksrc=CY_U3P_SYS_CLK; 状态 = CyU3PDeviceInit (&clockConfig); 如果(状态!= CY_U3P_SUCCESS) { goto handle_fatal_error; } /* 初始化缓存。 启用指令缓存并保持数据缓存禁用。 * 仅当有大量基于 CPU 的内存时,数据缓存才有用 * 访问。 在简单情况下使用时,可能会因较大的 * 缓存刷新和清理的次数,也增加了 * 代码。 */ 状态 = CyU3PDeviceCacheControl (CyTrue,CyFalse,CyFalse); 如果(状态!= CY_U3P_SUCCESS) { goto handle_fatal_error; } /* 为设备配置IO矩阵。*/ io_cfg.isDQ32Bit = CyFalse; io_cfg.useUart = CyTrue; io_cfg.使用I2C = CyTrue; io_cfg.useI2S = CyFalse; io_cfg.useSpi = CyTrue; io_cfg.lppMode = CY_U3P_IO_MATRIX_LPP_DEFAULT; /* 设置 GPIO 输入使能 */*/ io_cfg.gpioSimpleEn[0] = 0; io_cfg.gpioSimpleEn[1] = 0; io_cfg.gpioComplexEn[0] = 0; io_cfg.gpioComplexEn[1] = 0; |
|
相关推荐
1个回答
|
|
|
针对您的问题,以下是可能的原因和解决方案的逐步分析: 1. GPIF 状态机和引脚分配
2. 时钟配置和同步
3. 24 位数据对齐和总线宽度
4. 外设引脚冲突
5. DMA 缓冲区配置
6. 固件调试建议
示例代码修改总结优先检查 GPIF 引脚分配、总线宽度(32 位) 和 时钟配置,确保无外设冲突。如果问题仍存在,建议逐步注释掉其他外设(如 SPI、UART)的初始化代码,排除资源冲突的可能性。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2374 浏览 0 评论
1426 浏览 0 评论
1877 浏览 0 评论
CYUSB3014烧录失败Cypress Benicia USB Boot Device
7871 浏览 1 评论
11295 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 02:55 , Processed in 0.693738 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2993