完善资料让更多小伙伴认识你,还能领取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)); 我没有发现引脚配置有任何问题。 我已经检查了从处理器到显示器(自定义硬件)的连续性并且它已连接。 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1931个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36414 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4782 浏览 1 评论
6099 浏览 1 评论
6807 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4243 浏览 0 评论
641浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
637浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
639浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
725浏览 2评论
833浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 14:13 , Processed in 1.080827 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号