完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我正在 MCUXpresso 中为 LPC54102 处理器开发一个应用程序。我正在使用 SDK 和配置工具来设置 SPI。
处理器必须与连接到 SPI1 的显示器(四线 SPI)通信。此外,显示屏上还有一个从机选择 (0) 和一个 D/C# 引脚。D/C# 用于表示数据或命令。命令低,数据高。该引脚由每个传输字节中数据的第 8 位的显示进行检查。 我遇到的问题是,当我调用 SPI_MasterTransferBlocking() 时,我看到了所有数据,但该函数在最后几位传输到显示器之前返回。当我在函数返回后将 D/C# 引脚(为数据做好准备)设置为高电平时,显示器会看到它变高并且最后一个命令被解释为数据而不是命令。 有什么办法可以知道所有的数据都已经传输了吗?我已经尝试检查 SPI->STAT 寄存器中的 END TRANSFER 和 MStiDLE 位。从描述来看,似乎 MSTIDLE 位是我想要的,但是当 SPI_MasterTransferBlocking() 函数返回时它似乎没有被设置。 我也试过调整 SPI 延迟,但也没有成功。 我可以通过添加一个循环来伪造它(数到 100 似乎可以做到),但就我而言,这是一种黑客攻击——这让我觉得我遗漏了一些东西。 这个处理器通常是如何完成的? 这是 SPI 配置: const spi_master_config_t SPI1_config = { .polarity = kSPI_ClockPolarityActiveHigh, .phase = kSPI_ClockPhaseFirstEdge, .direction = kSPI_MsbFirst, .baudRate_Bps = 2000000UL, .dataWidth = kSPI_Data8Bits, .sselNum = kSPI_Ssel0, .sselPol = kSPI_SpolActiveAllLow, .enableLoopback = false, .enableMaster = true, .fifoConfig = { .enableTxFifo = false, .txFifoSize = 1U, .txFifoThreshold = 0U, .enableRxFifo = false, .rxFifoSize = 0U, .rxFifoThreshold = 0U }, .delayConfig = { .preDelay = 0U, .postDelay = 0U, .frameDelay = 0U, .transferDelay = 0U } }; spi_master_handle_t SPI1_handle; static void SPI1_init(void) { /* Initialization function */ SPI_MasterInit(SPI1_PERIPHERAL, &SPI1_config, SPI1_CLOCK_SOURCE); /* Interrupt vector SPI1_IRQn priority settings in the NVIC. */ NVIC_SetPriority(SPI1_IRQN, SPI1_IRQ_PRIORITY); SPI_MasterTransferCreateHandle(SPI1_PERIPHERAL, &SPI1_handle, display_hardware_master_transfer_callback, NULL); } 我将回调用于非阻塞调用,因此不会在此处调用。 另一个问题是从选择引脚似乎根本没有切换。它一直很低。 这是为该引脚生成的配置: IOCON->PIO[1][5] = ((IOCON->PIO[1][5] & /* Mask bits to zero which are setting */ (~(IOCON_PIO_FUNC_MASK | IOCON_PIO_MODE_MASK | IOCON_PIO_DIGIMODE_MASK))) /* Selects pin function. * : PORT15 (pin 19) is configured as SPI1_SSEL0. */ | IOCON_PIO_FUNC(PIO15_FUNC_ALT2) /* Selects function mode (on-chip pull-up/pull-down resistor control). * : Inactive. * Inactive (no pull-down/pull-up resistor enabled). */ | IOCON_PIO_MODE(PIO15_MODE_INACTIVE) /* Select Analog/Digital mode. * : Digital mode. */ | IOCON_PIO_DIGIMODE(PIO15_DIGIMODE_DIGITAL)); 我没有发现引脚配置有任何问题。 我已经检查了从处理器到显示器(自定义硬件)的连续性并且它已连接。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
2135个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
37376 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
6775 浏览 1 评论
7793 浏览 1 评论
7642 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
5071 浏览 0 评论
1555浏览 2评论
关于NINA-W132 Wi-Fi模块SPI通信遇到的疑问求解
1207浏览 2评论
如何在MPC PowerPC MCU上首次刷写后禁用BDM?
749浏览 1评论
将HFREFR和LFREFR寄存器值设置为错误的值来将故障注入CMU,但CMU_ISR值始终为零,为什么?
734浏览 1评论
将SPSDK for FRDM-MCX-W71 SDK与VS一起安装时出现hidapi构建错误怎么解决?
677浏览 1评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 18:35 , Processed in 0.586444 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
418