完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我想寻求一些帮助,了解如何在 LPC4370 运行时切换 SPI 模式。我考虑过这篇文章是针对与我正在经历的问题类似的问题发表的,但这与我使用 LPC 的可能性不符。这可能非常简单,但我似乎深陷其中。
问题 我正在使用 SSP1,并连接了三个从站。每个从机在不同的 SPI 模式下运行。在初始化期间,我成功地与所有三个通信: 1. 从机 0 --> SPI 模式 1 2. 从机 1 --> SPI 模式 0 3. 从机 2 --> SPI 模式 3 但是在 slave 2 初始化之后,我需要在无限循环中使用以下功能: 1.与Slave 1通信(SPI模式0) 2.与slave 2通信(SPI模式3) 3.回到步骤1重复 (不再与从站 0 通信)。 我所看到的是,在从站 2 启动后,如果我想与从站 1 通信,SPI 模式将固定为 SPI 模式 3(这是预期的,因为我正在使用指向 SSP 基的指针,请参见代码)。但是当使用逻辑分析器时,我看到的行为更类似于不同的 SPI 模式(我希望看到从机 1 在 SPI 模式 3 下通信):
我需要在运行时快速切换 SPI 模式以与两个从设备接口: 设置:
无限循环:
#define LPC_SSP LPC_SSP1 /* Slave 1 initialization */ void SL1_init() { (var 'ports' init) Chip_SSP_Disable(LPC_SSP); SL1_Init(LPC_SSP, ports, TDC_clock_freq); } void SL1_Init(LPC_SSP_T* SPI_BUS, SL_ports config, float Clock_frequency) { Slave1_SPI = SPI_BUS; //global var inside of this file SL1_Init_SPI(); // init ports Clock_Frequency = Clock_frequency; } void SL1_Init_SPI() { Chip_SSP_Init(Slave1_SPI); SSP_ConfigFormat ssp_format; ssp_format.frameFormat = SSP_FRAMEFORMAT_SPI; ssp_format.bits = SSP_DATA_BITS; ssp_format.clockMode = SSP_CLOCK_MODE0; Chip_SSP_SetFormat(Slave1_SPI, ssp_format.bits, ssp_format.frameFormat, ssp_format.clockMode); Chip_SSP_SetMaster(Slave1_SPI, 1); Chip_SSP_SetBitRate(Slave1_SPI, 10000000); Chip_SSP_Enable(Slave1_SPI); } 对于奴隶 2: void Init_Slave2(LPC_SSP_T* spi_bus, Slave2_con config) { Slave2_SPI = spi_bus; Slave2_Init_SPI(); //pin init } void Slave2_Init_SPI() { // Chip_SSP_Disable(Slave2_SPI);//new Chip_SSP_Init(Slave2_SPI); SSP_ConfigFormat ssp_format; ssp_format.frameFormat = SSP_FRAMEFORMAT_SPI; ssp_format.bits = SSP_DATA_BITS; ssp_format.clockMode = SSP_CLOCK_MODE3; //can be 1 or 3 Chip_SSP_SetFormat(Slave2_SPI, ssp_format.bits, ssp_format.frameFormat, ssp_format.clockMode); Chip_SSP_SetMaster(Slave2_SPI, 1); Chip_SSP_SetBitRate(Slave2_SPI, 1000000); Chip_SSP_Enable(Slave2_SPI); } 事情已经尝试过 两个从设备都将指针直接更改为 LPC_SSP。我认为需要哪个?我以为我可以在运行时“只是”调用 slavex_init_spi() 函数,但这导致 LPC_SSP C0 寄存器被完全搞砸了:
注意事项 我是否需要在尝试通信之前或之后的 SPI 重新启动之间添加强制延迟? 我不能简单地使用不同的 SSP 端口,因为控制器连接到自定义 PCB(以前工作过,但我没有该代码)。 |
|||
相关推荐
|
|||
只有小组成员才能发言,加入小组>>
1905个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36355 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
4392 浏览 0 评论
6044 浏览 1 评论
6760 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4209 浏览 0 评论
617浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
612浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
602浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
692浏览 2评论
791浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-19 14:35 , Processed in 1.265071 second(s), Total 98, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号