Multi Source Translation Content

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Multi Source Translation Content

讨论

排序依据:
屏幕分辨率的高度能不能设置100以下的? 我的屏幕是256x64,然后64就没办法设置,要设置成100,还有其他的小屏幕就不好用这个软件开发 Re: 屏幕分辨率的高度能不能设置100以下的? 使用esp32,屏幕是led点阵屏,hub75接口的。为什么要限制分辨率呢,现在因为分辨率问题没把法使用改软件 Re: 屏幕分辨率的高度能不能设置100以下的? 我也有同样问题,用76*284的屏幕,软件只能100~2500的分辨率 Re: 屏幕分辨率的高度能不能设置100以下的? Hi @zhujianfeng  您可以详细描述一下您的问题么?你用什么芯片,用什么屏幕? BR Harry Re: 屏幕分辨率的高度能不能设置100以下的? 然后64就没办法设置 回复: 屏幕分辨率的高度能不能设置100以下的? 可以在xxx.guiguider文件中修改后再用guider打开
查看全文
I²C 总线概述(日本博客) 0. 目录 目录 什么是I²C? 1.1 历史和规格 1.2 控制器/目标 物理/电气特性 2.1 信号线数量:SDA、SCL 2.2 开漏输出(线与门) 2.3 时钟频率 2.4 连接拓扑 协议 3.1 必需功能和可选功能 3.2 数据传输单元 3.3 公交车状态:换乘的开始和结束 3.4 交易结构 3.5 写入和读取事务 参考资料 1. 什么是 I²C? 1.1 历史和规格 I²C (I²C)总线是一种串行总线规范,由荷兰飞利浦公司(现为恩智浦半导体公司)于 1982 年开发和发布。 I²C 是“集成电路间电路” (Inter Integrated Circuit )的缩写,写作“IIC”,其中重叠的“I”是平方的。 当年开发这条总线的时代,电视和无线电电路尚在使用可变电阻和可变电容器,通过线圈芯的螺丝进行调整和设置。I²C取代了这些,并开始被用作总线,以通过设备中内置的控制器和工厂计算机来控制各项功能并实现其自动化。 为此,原始时钟频率设置为 100 kHz,并且没有预料到会有大量的数据传输。 上世纪 80 年代末我加入飞利浦时,实验室配备了闭路电视(计算机控制电视)和其他设备来演示这一概念。 当前的I²C 规范由恩智浦半导体公司(NXP Semiconductors)管理,该公司原为飞利浦半导体部门。该规范以《 I²C 总线规范及用户手册》 (文档编号 UM10204 )的形式发布,最新版本为 Rev.7。日文版Rev.5 也以《 I²C 总线规范及用户手册》的形式发布。Rev.5 和 Rev.7 的区别在于:图 41 和图 42 的修改、表 5 的新增内容、主/从模式改为控制器/目标模式(与 I3C 类似),以及在第 9 章中新增了“I3C 概述”(详情请参见 Rev.1 中的表 1:修订历史)。由于这些差异不影响 I²C 规范的主要内容,因此日文版可作为参考。 1.2 控制器/目标 I²C 通信始终以主从关系进行。用于指代这些角色的术语分别是控制器和目标[图 1]。 图 1:控制器和目标 该规范允许多个控制器存在于一条 I²C 总线上。 旧规范中使用了“主/从”术语,但现在已改为“控制器/目标”。 2. 物理/电气特性 2.1 信号线数量:SDA、SCL I²C 是一种双线串行总线,一根线用于传输时钟信号,一根线用于传输数据信号。由于数据与时钟信号同步交换,因此它被归类为“同步串行接口”。 数据通信可以双向进行,但由于它通过单条数据线传输,因此无法同时进行,必须交替切换。正因如此,这种通信方式被称为半双工,而不是全双工,后者允许同时进行发送和接收。 时钟信号线和数据信号线分别称为SCL(串行时钟线)和SDA(串行数据线) 。 数据以比特为单位进行传输或接收,并与时钟周期同步。 2.2 开漏输出(线与门) I²C 的一个显著特点是使用一种称为“开漏”的方法来产生信号。 在许多通信应用中,使用一种称为推挽的方法来输出数字信号。推挽是一种当输出高电平信号时,在信号线上输出(推)特定电压,而输出低电平信号时,将信号线拉至地线(拉)的方法[图 2-a]。 开漏输出与“上拉”输出类似,都是输出低电平,但当输出高电平时,电路会进入高阻抗状态。在这种状态下,连接到信号线的上拉电阻可以确保获得指定的电压[图2-b]。 图 2-a:推挽输出 图 2-b:开漏输出 那么,为什么要采用这种输出方法呢? 这是因为 I²C 允许多个设备同时输出到同一信号线。当多个设备处于输出状态时,即使只有一个设备输出低电平,信号也会变为低电平。 这种连接方式,即当所有设备输出高电平时信号为高电平,否则为低电平,称为“线与”[图 3]。 图 3:已接线并连接   I²C 具有名为“时钟拉伸”和“多控制器”的可选功能。这些功能允许连接到同一总线的多个设备同时输出,并使用开漏连接来管理它们的状态。 I²C 高电平电压在规范中没有明确定义。上拉电阻所连接的电源电压 (VDD) 因器件而异。通信时,必须使用连接器件之间通用的电压。在许多情况下,VDD 使用 5V 或 3.3V 等电压,但在 SoC 芯片和其他电压越来越低的器件中,有时会使用 1V 或更低的电压。I²C输入信号电压在 0.3VDD 或更低时设置为低电平,在 0.7VDD 或更高时设置为高电平,因此,当连接电压不同的 I²C 总线时,必须使用“信号电压转换器( VLT :电压电平转换器)”。要转换此信号电压,需要选择一个与 I²C 兼容的器件,并考虑到 I²C 信号是双向开漏信号。 使用 I²C 时,还必须考虑信号的模拟特性。这是指由于漏极开路而导致信号输出发生变化所需的时间。从高电平到低电平的下降时间很快,但从低电平到高的上升时间则可能很慢,具体取决于总线的状态。具体来说,随着连接设备数量的增加或信号线长度的增加,上升时间会变慢。这是因为信号线的电容增大了[图 4]。 每种模式都限制了允许的电容值,这决定了 I²C 时钟速度的上限。 图 4:电容和信号上升时间   2.3 时钟频率 I²C 根据可使用的最大时钟频率定义了“模式”[表 1]。 最基本的模式称为标准模式( Sm ),工作频率低于 100kHz 。 其次是上限为 400kHz 的快速模式( Fm )。大多数控制器和目标设备都支持 Sm 和 Fm 模式。 还有快速模式增强版( Fm+ ),其时钟速度可以低于 1MHz ,适用于数据速率高的应用。 此外,还有一种最高速度可达3.4MHz的高速模式( HS 模式或Hs )。这种高速模式有其特定的协议,用于切换到该速度进行通信,并且需要桥接器才能与其他模式混合通信。目前配备支持此模式控制器的设备并不多。 针对特殊应用,还规定了一种超高速模式。该模式的时钟频率上限为 5MHz,并且通信方向限制为从控制器到目标设备的单向通信,因此与其他模式不兼容。 当使用“I²C”而未提及模式时,通常指的是最常见的标准模式或快速模式,本博客也将基于这些模式。 模式 缩写 最大时钟频率 评论 标准模式 小 100kHz 最受欢迎的模式 一般来说,I²C 指的是最高兼容 400kHz 频率的 Fm 接口。 快速模式 调频 400kHz 第一模式+ FM+ 1MHz 规格参数包括更高的速度、电流消耗和母线容量 许多微控制器中都安装了具有这种功能的控制器。 高速模式 赫斯 3.4MHz 收养案例并不多。 兼容SM和FM。通过协议切换到HS模式。 在总线上混合使用 Sm 和 Fm 设备时需要桥接器。 超快模式 UFm 5MHz 只写加速模式 需配合专用控制器和目标设备使用。与其他 I²C 模式不兼容。 表1:各模式的频率和特征   2.4 连接拓扑 任何连接到 I²C 的设备都连接到两条信号线:SCL 和 SDA 。 这种连接方式称为“多点连接”。每个设备都通过两根导线“悬挂”连接[图5]。可连接的设备数量受“总线容量”的限制。信号线越长,连接的设备越多,总线容量就越大。 通信发生在“控制器”和“目标”之间。所有通信均由控制器发起。 在 I²C 中,控制器和目标之间每次传输都是一对一进行的。虽然可以有意地让多个目标拥有相同的地址,但从控制器的角度来看,只能“与一个地址通信”[图 6]。 控制器通过目标地址指定要通信的设备,并指示数据传输方向。 控制器控制所有传输(开始和结束、指定通信目标和传输方向以及向 SCL 输出时钟)。 也可以在同一条 I²C 总线上连接多个控制器。这可以通过使用名为“多控制器”的可选 I²C 功能来实现。 在这种配置下,一旦一个控制器完成数据传输,另一个控制器即可进行通信。此外,还建立了总线仲裁机制,以应对多个控制器同时开始传输数据的情况。 在多控制器配置中,所有连接的控制器都必须支持这种仲裁机制。 然而,采用多控制器配置的系统并不多见。虽然许多微控制器和其他设备内置的 I²C 控制器支持多控制器,但大多数简单的系统都使用单个控制器。 在本文中,我们将只考虑单个控制器的情况,以便解释 I²C 的基本原理。 图 5 :多点连接   图 6:与单个目标地址的通信 3. 协议 3.1 必需功能和可选功能 该协议决定了数据传输方式。 I²C协议包含必需功能和可选功能。上一节提到的多控制器就是一个可选功能。如前所述,本文将不讨论可选功能,而只解释必需功能。 I²C 的必要功能和可选功能总结在[表 2]中。 表 2:I²C 功能。必需/可选(摘自 I²C 规范(日文版:rev5.0)) I²C 通信通常具有以下结构: 沟通开始 数据传输 沟通结束 作为此原理的应用,也可以在不先结束上一次通信的情况下开始下一次通信(重复开始)。 数据传输部分可以传输 1 字节到多个字节的数据。 传输开始后的第一个字节总是从控制器传输到目标,并指定目标地址和后续数据传输的方向(发送或接收) 。 I²C 规范对第二个字节之后可以传输的字节数没有施加任何特殊限制[图 7]。 在与同一目标通信时,如果需要在发送和接收数据之间切换;或者在与不同目标通信时,需要重新开始通信,并再次指定目标地址和传输方向。 图 7:I²C 通信的基本结构 3.2 数据传输单元 通信的基本单位是 9 位,其中 8 位是数据,后跟 1 位。数据为 8 位,最高有效位 (MSB) 在前。最后一位是确认位,它以与发送数据相反的方向返回,用于确认每次通信。在 I²C 中,数据传输始终以 9 位为单位进行 [图 8]。 数据以每个时钟周期发送或接收一位。 数据变化与时钟同步。SDA 只能在 SCL 为低电平时改变状态(从低电平变为高电平或从高电平变为低电平),并且在 SCL 为高电平时保持低电平或高电平[图 9]。 图 8:每次 8 位数据传输都会返回一个 1 位确认信息。   图 9:SCL 低时 SDA 信号的变化 3.3 公交车状态:换乘的开始和结束 通信的开始和结束分别由开始条件和停止条件通知,它们标志着传输的结束。 如前所述,“只有当 SCL 为低时才允许 SDA 更改”,但此启动/停止条件是一个例外。 当 SCL 为高电平时,如果 SDA 从高电平变为低电平,则为启动条件。类似地,当 SCL 为高电平时,如果 SCL 从低电平变为高电平,则为停止条件[图 10]。 图 10:启动和停止条件 在启动条件发出后,正在进行转账的状态称为“忙碌”;在停止条件发出后,没有正在进行转账的状态称为“空闲”。启动条件在空闲状态下发起。 控制器输出启动/停止条件和 SCL。 起始条件之后的 9 位传输用于指定目标地址和传输方向。 然后数据通过一次或多次连续的 9 位传输进行传输。 除了开始条件和停止条件之外,还定义了“重复开始条件”来分隔数据传输。 启动条件是公交车处于自由状态,但必须先满足停止条件,公交车才能进入自由状态。 如果控制器执行连续传输,则可以省略此停止条件。重复启动条件会直接启动下一次传输,而无需经过自由状态(图 11)。 图 11:重复起始条件   当在前一次传输中生成启动条件而未生成停止条件时,就会出现重复启动条件。重复启动条件在功能上与普通启动条件相同。除非另有明确说明,否则下文中的启动条件均指重复启动条件。 在多控制器环境中,提供重复启动条件是为了允许一个控制器在保持总线所有权的同时,连续执行多次传输操作。这是因为一旦总线空闲,另一个控制器就可以立即启动传输操作。通过保持总线繁忙状态而不使用停止条件,控制器可以维持总线的所有权。 从现在开始,为了方便起见,我们将把从(重复)开始条件到停止条件,或者从(重复)开始条件到下一个重复开始条件的单元称为“事务”。 3.4 交易结构 事务(图 12)总是以起始条件开始。起始条件之后,控制器发送的数据指定目标地址和传输方向。 图 12:基本 I2C 传输示例及波形(写入事务示例)   目标地址是7 位信息,用于指定要与之通信的设备。通信将与匹配此地址的设备进行(I²C 规范将“10 位寻址”定义为一个选项,但由于大多数情况下使用 7 位寻址,因此我们不再赘述)。 在7位地址之后,会发送一个指定传输方向(读/写)的位。如果该位为“0”,则表示从控制器到目标的写传输;如果该位为“1”,则表示从目标到控制器的读传输。 目标地址第七位之后的第九位加上一个读/写位是确认位。该位是目标端返回的低电平信号。 如果控制器输出的目标地址所指定的设备存在,则目标设备会向 SDA 输出低电平作为确认位。此时,控制器输出高电平,因此如果目标设备不存在,SDA 将保持高电平。换句话说,如果目标设备存在,则确认位为低电平;如果目标设备不存在,则确认位为高电平。当此确认位为低电平时,称为ACK (确认);当其为高电平时,称为NACK (不确认)。 输出目标地址和传输方向,如果返回 ACK,则数据传输继续进行。如果目标地址不存在且返回 NACK,则事务到此结束(控制器发出停止条件或重复启动条件)。 如果数据传输方向为写,则接下来的 8 位数据从控制器传输到目标设备,然后目标设备向控制器发送 1 位确认位。 如果是读取传输,控制器会将 SDA 保持高电平,并与 SCL 同步读取目标输出的 8 位数据。此读取传输始终包含一个确认位。控制器会将附加在读取传输数据上的确认位输出。如果读取传输继续进行,则返回 ACK;如果传输要中止,则返回 NACK。 ACK/NACK 对 I²C 通信至关重要。这是因为 ACK 机制允许通信在持续检查对方状态的同时进行。当收到 NACK 时,通信即告终止。 根据 I²C 规范,NACK 发生的条件如下: 目标地址指定的设备在总线上不存在。 目标设备当前正在执行一些处理操作,不处于可以与控制器通信的状态,因此无法发送或接收数据。 目标设备无法理解传输过程中接收到的数据或命令。 传输过程中,目标设备无法接收更多数据字节。 在读取传输过程中,当控制器通知目标设备传输完成时 3.5 写入和读取事务 在单次事务中,数据传输方向是恒定的。因此,如果您向目标设备写入数据,然后再从中读取数据,则会发生连续的事务。 例如,当指定目标设备的寄存器号并从中读取数据时,可以先执行写入传输,然后再执行读取传输。 在这种类型的传输中,某些目标设备需要重复的启动条件来分隔事务,而另一些设备在重复启动条件的情况下可能无法按预期运行。这取决于目标设备的具体规格,因此您必须谨慎操作。 4. 参考资料 I2C 总线规范和用户手册(版本 5.0)日文版) I2C 总线规范和用户手册(版本 7.0)英文版) NXP社区博客:I²C硬件调试 NXP社区博客:I3C:下一代串行总线 NXP社区博客:SPI总线概述 Interface 2024 年 3 月刊(CQ Publishing) :专题文章“从零开始的串行通信 [使用 Pico 进行 UART/I2C/SPI 通信]” 晶体管技术特刊第 161 期“测量、测量、测量电路与技术汇编”附录:“2 线串行接口 I²C 的详细说明”——以上杂志文章摘自该文章。 首次登场: 《晶体管技术》,2014年10月刊(CQ出版社),“基础知识:双线串行接口I²C的详细说明”,第152-176页 Interface Magazine,2024 年 3 月刊(CQ Publishing),“从零开始构建 I²C 和 SPI ②...I²C 通信标准”,第 55-61 页 ← 上述文章的更新和重新组织版本。 在这篇博文中,我摘录、补充并修改了解释通信规范的部分。 变更历史记录: 2025年2月3日:第一版 2025-02-04:“4.在“参考资料”部分添加了博文“I²C 硬件调试”。 2025 年 3 月 5 日:第 2.2 节 开漏输出(有线和嵌入式)更正了参考图号。 2025-11-30:更正了一处拼写错误。 2026-04-03:更正了原始条目。 ========================= 我们目前无法回复此帖子“评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问,请参阅“ NXP技术问题-如何联系我们(日语博客) ”。 (如果您已经是恩智浦的分销商或与恩智浦有合作关系,您可以直接询问负责人。) I²C 总线用于微控制器/处理器与外围设备之间的通信。 虽然这种串行总线应用非常广泛,但我还是想借此机会简要介绍一下它的起源。 通信标准 界面 日本博客
查看全文
什么是电池管理系统(BMS)?(日文博客) 电动汽车普及的原因是什么? 近年来,全球汽车行业正迅速向电动汽车转型。这不仅是一项技术创新,更是一项由多种因素复杂相互作用驱动的重大社会变革,其中包括: 环境因素:为应对全球变暖,需要减少二氧化碳排放。 电动汽车作为一种可持续的交通工具,因其在运行过程中不排放废气而备受关注。 政策支持:欧洲、中国和其他国家正在努力禁止销售汽油动力汽车。 此外,政府还出台了补贴等政策来促进电动汽车的购买,从而加速了电动汽车的普及。 技术进步:电池性能的提高正在改善电动汽车的续航里程和充电时间。 价格等障碍已经降低,使其成为普通消费者的现实选择。 在此背景下,如何安全管理电池并充分利用其便利性(这对电动汽车至关重要)的技术变得越来越重要。 什么是电池? 电池决定了电动汽车的性能、安全性和使用寿命。 电动汽车电池通常由数十到数百个相互连接的电池单元组成。 电池单元的化学结构多种多样,但每个单元的电压通常约为 3V。 出于组装方便等原因,有时会将多个电池单元捆绑在一起形成一个模块,称为电池模块。 电池组是一种将电池模块、BMS(如下所述)、电缆等部件封装在一个外壳中的设备。 电动汽车电池的总电压范围从几百伏到有时超过 1000 伏不等。 什么是电池管理系统(BMS)?它的作用是保护电池。 电池管理系统 (BMS)是一种用于安全高效地使用电池的管理系统。 电池管理系统 (BMS) 是一个持续监控电池状态并检测和控制异常情况的装置,从而防止事故发生,维护安全,并最大限度地提高性能。 鉴于上述原因,对于电动汽车等使用的可充电高压电池,始终需要电池管理系统 (BMS)。 电动汽车等车辆使用的高压电池的电池管理系统 (BMS) 通常由多个模块组成,每个模块对电池都起着至关重要的作用。 在这里,我们将介绍恩智浦设想的三种典型组件。 CMU(细胞监测单元) CMU 是连接到电池模块上的一个单元,用于测量每个电池单元的电压和温度。 从安全角度来看,实时准确掌握每个电池单元的状态至关重要。该系统具有以下功能: 防止过充和过放 细胞平衡以实现所有细胞的有效利用 早期发现异常细胞 CMU 提供准确的数据,以提高电池的整体稳定性和使用寿命。 CMU 也称为电池管理单元、BCC(电池单元控制器)。 BJB(电池接线盒) BJB 是一种测量整个电池组电流和电压的装置,具有保护功能,可在发生异常情况时物理切断电流。 它包含高压继电器、熔断器、电流传感器等元件,具有以下功能: 过电流和短路检测 安全充电和放电控制 发生异常情况时可靠地中断电流 万一出现问题,BJB 可保护电池、整车以及最终车内人员的安全,从而确保安全。 BJB的另一个名称:电池组监控器(仅用于监控功能) 电池管理单元 (BMU) BMU 是控制整个 BMS 并为其做出决策的中央单元。 它整合来自CMU和BJB的数据,并根据上位机的指令分析和控制电池状态。它具有以下功能: 荷电状态 (SOC) 估算 健康状况 (SOH) 评估 与其他单元(例如车辆ECU和充电器)的通信 电池管理单元 (BMU) 及其控制是决定电动汽车行驶效率和安全性的重要因素。 恩智浦的电池管理系统解决方案 随着电动汽车的发展,电池管理系统(BMS)也需要高精度、高可靠性和高安全性。 恩智浦提供符合这些要求的实用BMS参考设计。 基于ETPL的800V电池管理系统(BMS)参考设计 *ETPL:电传输协议链路 功能安全设计符合 ASIL D 标准 可扩展配置,支持高达 800V 的电压 提供的软件驱动程序 以下文件概述了恩智浦在电气化领域所做的努力。 我们希望您能浏览并了解更多关于我们产品及其功能的信息。 恩智浦的电气化解决方案  这些材料对于计划设计电池管理系统的工程师来说是非常有用的解决方案。 =========================== 更改历史记录 2025年8月28日:博客文章 ========================= 我们目前无法回复此帖子“评论”部分的评论。 对于由此造成的不便,我们深表歉意。如有任何疑问,请参阅“ NXP技术问题-如何联系我们(日语博客) ”。 (如果您已经是恩智浦的分销商或与恩智浦有合作关系,您可以直接询问负责人。) ​ 以下是电池管理系统(BMS)的概述。 电动汽车普及的原因是什么? 什么是电池? 什么是电池管理系统(BMS)?它的作用是保护电池。 恩智浦的电池管理系统解决方案 如果未来与BMS有业务往来的人能够读到这篇文章,我会很高兴。 (阅读时间:5分钟) 介绍 日本博客
查看全文
TJA1103 硬件时间戳问题 我正在使用一台 MR-CANHUBK334,其中集成了一个 gPTP 堆栈,配置为从 TJA1103 的硬件时间戳模块获取时间戳。该节点被配置为 Gran Master。我的问题是,有时在入口/出口环形缓冲区上获取的时间戳与 PHY 用作时间戳参考的 LTC 计时器不一致。具体来说,每次收到信息时,从顶部缓冲区读取的时间有时会倒退,然后从那一刻起继续计数,但 LTC 始终是正确的。 这种情况是任意发生的,没有任何固定模式。有其他人遇到过这个问题吗? Re: TJA1103 HW timestamp issue 你好@FabioDb、 你的问题非常具体。 如果 LTC 保持稳定和正确,但从 FIFO 或环形缓冲器获取的时间戳偶尔会向后跳,则问题可能不在 LTC 本身,而在时间戳获取或解释路径。 您能否分享您所做的所有 TJA1103 注册表设置(与 PPS 有关)? 我已将您的问题转给应用团队作进一步调查。如果有任何进展,我会及时通知你们。 同时,请查看一般提示: 同时记录接收帧时的时间戳和 LTC 值。这将有助于确定不一致的原因是先进先出损坏、错位还是软件解释。 检查链路状态是否更改或 PHY RESET。如果 PHY 经历短暂的 RESET 或链路重新协商,则时间戳 FIFO 可能包含过时或无效的条目。 验证驱动程序或 HAL 中的时间戳读取逻辑。确保正确的字节序处理、位移,并且只有在完全锁存时间戳后才读取。 监测 FIFO 溢出或欠载情况。如果时间戳 FIFO 的耗尽速度不够快,旧条目可能会被覆盖或错位。 确认来自 S32K344 的 PPS_SYNC 信号稳定,并与 PHY 中的 LTC 更新周期正确对齐。任何抖动或错位都可能导致时间戳不一致。 确保 gPTP 协议栈正确处理时间戳偏移,不会根据对 PHY 行为的假设应用错误的修正。 顺祝商祺! 帕维尔
查看全文
imx8mp OpenGL 无显示 有没有办法让 OpenGL 在无头模式下运行(不连接显示器)? 我正在使用基于 fsl-xwayland 映像的 imx8mp。我知道 PGU 等设备在我的设备树中配置正确,因为连接后就能正常显示。如果我尝试像这样运行一个简单的 gstreamer 管道: gst-launch-1.0 videotestsrc ! video/x-raw,format=NV12,width=1920,height=1080 ! queue ! glupload ! glcolorconvert ! gldownload ! video/x-raw,format=RGB ! queue ! fakesink 我收到以下错误信息 Got context from element 'gldownloadelement0': gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)"\(GstGLDisplayWayland\)\ gldisplaywayland0"; ERROR: from element /GstPipeline:pipeline0/GstGLUploadElement:gluploadelement0: Failed to perform a wayland roundtrip 我的系统安装为通过 SSH 使用 remote-x 服务器,但即便如此,我也一无所获。 有没有什么 XDG 变量可以设置? 图形与显示 i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Linux 多媒体 Yocto Project Re: imx8mp OpenGL without display 所以,我要回答我自己的问题,供其他来这里的人参考: 我可以通过以下方法让 GPU 工作并执行 gstreamer glupload/glshader 等命令: - 为虚拟显示器加载 VKMS 内核模块 - 在 westom.ini 中设置 renderer=gl 并禁用"g2d" 。 经过这些设置后,WESTON 启动了,我也有了 opngl 命令。 有趣的是,我验证了 OpenCL 在 weston 离线时也能正常工作。遗憾的是,与普通矩阵相比,OpenCV 中使用 UMat 和 T-API 的性能并没有提高。它似乎确实比简单的逐元素乘法快得多,例如在 C 中,所以这可能要归因于 OpenCV 中的 Arm-neon 加速。 Re: imx8mp OpenGL without display 谢谢 ugurkur,但这似乎没什么用。 如果我检查 `echo $XDG_RUNTIME_DIR` ,会得到"/run/user/0" ,所以看起来没问题。 根据我的清单,我有你提到的所有代码包。但我仍然无法让 OpenGL 正常工作。 Re: imx8mp OpenGL without display 你好,我在 i.MX8M 板上遇到了同样的问题。对我有用的是将 weston、weston-init 和 weston-xwayland 代码包添加到我的 Yocto 图像中,这完全解决了显示错误。此外,我还使用以下命令设置了 XDG_RUNTIME_DIR 环境变量: export XDG_RUNTIME_DIR=/run/user/$( id -u) 希望这也能帮助您解决问题! Re: imx8mp OpenGL without display 那么,它们能教给我们什么吗?您还有什么其他想法,可能是什么原因导致了这个问题? Re: imx8mp OpenGL without display 这不是错误,你的系统应该在无显示的情况下运行。 此致 Re: imx8mp OpenGL without display 我得到以下信息 WARNING: erroneous pipeline: could not link videotestsrc0 to xvimagesink0, neither element can handle caps video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080 我是否漏掉了内核配置? Re: imx8mp OpenGL without display 你好 请再试一次: $ DISPLAY=:0 gst-用上市,不用发布-1.0videotestsrc !video/x-raw(memory:NVMM),width=1920,height=1080, 'video/x-raw,width=1920,height=1080 !xvimagesink sync=0 此致
查看全文
IMX8MQ Android 11の自動明るさコントロール こんにちは皆さん。IMX8MQ の Adaptive Brightness 機能に関して奇妙な問題が発生しています。OPT3001 周囲光センサを使用しました。このセンサをカーネル側に追加することに成功しました。dmesg ログで確認し、ルクス値を正常に読み取ることができます。役に立つ出力をいくつか紹介します。 ---------------------------------------------------------------------- smarc_mx8mq:/sdcard $ dmesg | grep オプト 3001 [ 2.901412] opt3001 0-0044: TI OPT3001 が見つかりました smarc_mx8mq:/sdcard $ ---------------------------------------------------------------------- cat /sys/bus/i2c/devices/0-0044/iio:device0/in_illuminance_input 113.440000 (これは単なる例であり、周囲の光に応じて異なります)。 ---------------------------------------------------------------------- ご覧のとおり、センサはカーネル側で動作しています。 HAL 側では、この周囲光のルクス値を制御して FMQ に書き込むサービスを駆動しています。 実際のところ、直接見せたほうがいいです。 これはdumpsys sensorserviceの出力です smarc_mx8mq:/ $ dumpsys センサーサービス 撮影時刻: 10:27:38.483 センサデバイス: 合計 1 個のハードウェア センサ、1 個が実行中、0 個の無効なクライアント: 0x00000001) アクティブカウント = 1; サンプリング期間(ms) = {250.0},選択 = 250.00 ミリ秒; バッチ期間(ミリ秒) = {0.0},選択 = 0.00 ミリ秒 センサーリスト: 0x00000001) OPT3001 アンビエントライト | Texas Instruments | バージョン: 1 | タイプ: Android.sensor.light(5)| パーミッション: なし | フラグ: 0x00000002 変更時 | maxDelay=0us | maxRate=5.00Hz| バッチ処理なし | 非ウェイクアップ | 核融合国家: 9軸融合無効(クライアント数0)、ジャイロレート=200.00Hz、q=<0,0,0,0>(0)、b=<0,0,0> ゲームフュージョン(磁気なし)無効(クライアント0台)、ジャイロレート= 200.00Hz、q=< 0, 0, 0, 0 > (0)、b=< 0, 0, 0 > geomag fusion(ジャイロなし)無効(クライアント数0)、ジャイロレート= 200.00Hz、q=< 0, 0, 0, 0 >(0)、b=< 0, 0, 0 > 最近のセンサイベント情報: アクティブセンサ: OPT3001 アンビエントライト (ハンドル = 0x00000001、接続 = 1) ソケットバッファサイズ = 39 イベント情報 WakeLockステータス: 保持されていません モード:ノーマル センサのプライバシー: 無効 1 アクティブな接続 接続数: 0 動作モード: 通常 com.android.server.display.AutomaticBrightnessController | WakeLockRefCount 0 | uid 1000 | キャッシュサイズ 0 | 最大キャッシュサイズ 0 OPT3001 アンビエントライト 0x00000001 | ステータス: アクティブ | 保留中のフラッシュイベント情報 0 直接接続0件 以前の登録: 09:42:02 + 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController サンプリング期間=250000us バッチ処理期間=0us 09:37:56 - 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController 09:35:28 + 0x00000001 pid= 551 uid= 1000 パッケージ=com.android.server.display.AutomaticBrightnessController サンプリング期間=250000us バッチ処理期間=0us smarc_mx8mq:/ $ ご覧のとおり、automoticbrgihtnesscontroller は実際にセンサを認識しています。 ---------------------------------------------------------------------- これは自動輝度コントローラのdumpsysディスプレイ出力です dumpsysディスプレイ 自動輝度コントローラの設定: mScreenBrightnessRangeMinimum=0.035433073 mScreenBrightnessRangeMaximum=1.0 mDozeScaleFactor=1.0 初期光センサーレート=250 m通常の光センサーレート=250 mLightSensorWarmUpTimeConfig=0 mBrighteningLightDebounceConfig=4000 mDarkeningLightDebounceConfig=8000 mResetAmbientLuxAfterWarmUpConfig=true mAmbientLightHorizon=10000 m重み付けインターセプト=10000 自動輝度コントローラの状態: mLightSensor={センサ名="OPT3001 アンビエントライト", ベンダー="Texas Instruments", バージョン=1, タイプ=5, 最大範囲=100000.0,解像度=0.01、検出力=0.001、最小遅延=200000} mLightSensorEnabled=true mLightSensorEnableTime=470926 (2805217 ミリ秒前) m現在の光センサーレート=250 mAmbientLux=0.0 mAmbientLuxValid=false mAmbientBrighteningThreshold=0.0 mAmbientDarkeningThreshold=0.0 mScreenBrighteningThreshold=0.0 mScreenDarkeningThreshold=0.0 mL最終観測ルクス=0.0 mLastObservedLuxTime=0 (3276143 ミリ秒前) mRecentLightSamples=0 mAmbientLightRingBuffer=[] mScreenAutoBrightness=NaN mDisplayPolicy=明るい mShortTermModelTimeout=300000 mShortTermModelAnchor=-1.0 mShortTermModelValid=true mBrightnessAdjustmentSamplePending=false mBrightnessAdjustmentSampleOldLux=0.0 mBrightnessAdjustmentSampleOldBrightness=0.0 mForegroundAppPackageName=com.android.settings mPendingForegroundAppPackageName=null mForegroundAppCategory=-1 mPendingForegroundAppCategory=-1 -------------------------------------------------------------------------------- smarc_mx8mq:/ $ getprop | grep センサ [init.svc.sensor_fusion]:[停止] [init.svc.vendor.センサ]:[走る] [init.svc_debug_pid.sensor_fusion]:[] [init.svc_debug_pid.vendor.センサ]: [351] [ro.boottime.sensor_fusion]:[24640145010] [ro.boottime.vendor.センサ]: [20921317621] [ro.hardware.lightsensor]:[/sys/class/i2c-dev/i2c-0/デバイス/0-0044/] [vendor.ro.lightsensor.threshold]:[20] smarc_mx8mq:/ $ ro.hardware.lightsensor と vendor.ro.lightsensor.threshold が何なのか分かりません。これらはすでに含まれていたため、含めませんでした。私は opt3001 を使用しましたが、偶然にも 0x44 i2c アドレスも使用しています。 これは私のサービスです [init.svc.vendor.センサ]:[走る] 実際、すべてが良好に見えますが、周囲の光に基づいて明るさを変更するだけでは機能しません。 通常、明るさスライダーを設定してもバックライトは変化しませんでしたが、以前にもこの目的のためにサービスを生成しました。SO、コマンドラインで明るさを変更すると、 設定で system screen_brightness を入力すると、LCD のバックライトが変更されます。SO、バックライトを正常に駆動することに問題はありません。 ALS のルクス値を使用して背景光を運転するにはどうすればよいでしょうか?logcat (サービスでデバッグするためにログをいくつか追加しました)、サービス ファイル、dumpsys ディスプレイ、sensorservice 出力などの出力を添付します。 この問題に遭遇した方がいらっしゃいましたらお知らせください。回答だけでなく、あなたの意見もCAN共有します。何でも受け付けます。 添付ファイルを確認してください。zip ファイルには私が作成したサービス ファイルが含まれています。ご確認下さい。 キーワード: 周囲光センサ、IMX8MQ、バックライト、明るさ、スライダー、ルクス値 Re: Automatic Brgihtness Control on IMX8MQ Android 11 こんにちは、 これについては、一般的な Android ドキュメントを参照してください。以下を参照してください。 https://developer.android.com/develop/sensors-and-location/sensors/sensors_environment#sensors-using-temp   よろしくお願いいたします。 アルド。 Re: Automatic Brgihtness Control on IMX8MQ Android 11 また、センサのフラグタイプを変更することはできません。dumpsys sensorserviceの出力を見ると、 センサーリスト: 0x00000001) OPT3001 アンビエントライト | Texas Instruments | バージョン: 1 | タイプ: android.sensor.light(5) | パーマ: n/a | フラグ: 0x00000002 変更時 | maxDelay=0us | maxRate=5.00Hz | バッチ処理なし | 非ウェイクアップ | サービス ファイルに連続したフラグ 0x00 を設定しましたが、変更されることはありません。このセンサフラグを 0x02 から 0x00 に変更するにはどうすれば良いかご存知ですか。 よろしく
查看全文
使用外部工具链 linux 内核版本在 ARM 上构建 Root 我正在尝试使用外部(官方 Arm 工具链)为 iMX6 板构建 Linux 版本,但我遇到了使用 sshd 的问题。 经过一番调查,官方的ARM工具链似乎带有Linux内核头文件 4.20 ,而我的实际内核是6.12。因此,sshd无法工作,因为某些缺失的系统调用会被 seccomp 阻止(例如 __NR_clock_gettime64 导致 SIGSYS) 问题是,是否有可能结合外部工具链使用实际的内核头文件? 以下是我目前掌握的情况 BR2_arm=y BR2_cortex_a9=y BR2_TOOLCHAIN_EXTERNAL=y BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47" 我尝试添加 br2_package_host_linux_headers_custom_6_12 = 但它被忽略了。 Re: Buildroot on ARM with external toolchain linux kernel version 你好@rustyx 希望你一切都好。 不幸的是,恩智浦不支持 Buildroot,因此我无法为您的环境提供很多有用的信息。 您可以尝试在 yocto 环境中自行生成工具链。 请参见第 4.5.12 章如何在 i.MX Linux 用户指南的独立组网 (SA) 环境中版本 U-启动 和内核。 顺祝商祺! 萨拉斯
查看全文
如何配置LPC845 BRK ADC2和ADC3? 我正在使用 LPC845 BRK,需要配置 ADC2 和 ADC3 来测量来自 pin27 和 pin8 的电压水平。 示例项目是lpc845breakout_lpc_adc_basic。ADC0 在这个项目中运行没有任何问题。 尝试扩展项目以像这样使用 ADC2 和 ADC3, ADC_DoSelfCalibration(ADC2_BASE,频率)); ADC_DoSelfCalibration(ADC3_BASE,频率)) ; ADC_Init(ADC2_BASE,&adcConfigStruct); ADC_Init(ADC3_BASE,&adcConfigStruct); 如果将 ADC0 定义为 ADC 基地址,那么 ADC2 和 ADC3 的基地址是多少? #定义ADC0_BASE(0x4001C000u)//在LPC845.h中 我希望您能分享一个如何成功配置 ADC2 和 ADC3 的示例。 非常感谢, 奥西 LPC800 回复:如何配置 LPC845 BRK ADC2 和 ADC3? 感谢 frank_m 的澄清, 现在我清楚了 回复:如何配置 LPC845 BRK ADC2 和 ADC3? > 我正在使用 LPC845 BRK,需要配置 ADC2 和 ADC3 来测量来自 pin27 和 pin8 的电压水平。 我自己没有/不使用 LPC845。 但是,阅读数据表后,我认为你错了。该MCU只有一个ADC,最多可以有12个独立通道。 要使用这些通道,您需要初始化相应的 GPIO 引脚,类似于通道 0(我认为提到的示例提供了)。 > ADC_DoSelfCalibration(ADC2_BASE,频率)); 并且校准是针对整个 ADC 单元进行的,而不是针对单个通道。
查看全文
对于 S32K3,MBDT 是否可以访问 EEPROM 功能? MBDT 库内是否有 EEPROM 访问权限?如果没有,我们如何使用自定义链接器,如何存储在 Simulink 中声明的变量以存储在非易失性存储器中,以及如何在运行时访问该内存?或者有其他推荐的方法吗?谢谢。 回复:对于 S32K3,MBDT 是否可以访问 EEPROM 功能? 具体来说,我们知道 S32K344 评估套件具有用于非易失性存储器的 MX25L6433FM2I-08G 芯片。我的问题是,为了访问芯片进行闪存,如何在 MBDT 的配置工具中设置 SPI,以及对其进行编程的 SPI 协议是什么? 谢谢。
查看全文
I.MX8 MINI的PCIE问题 您好,我们使用i.MX 8M Mini Quad作为产品的主控制器,考虑到它不支持USB3.0的功能,我们就计划使用它的PCIE接口配合UPD720202K8-711-BAA-A芯片来实现USB3.0的功能。但是我在“i.MX 8M Mini Hardware Developer’s Guide”中看到“使用适当的外部 PCIe 参考时钟发生器”。我想了解一下为何要建议使用外部的PCIe时钟发生器呢?在我的这个方案中如果不作用外部时钟发生器可以吗?会有什么影响? (我目前的设计是没有使用外部时钟发生器,UPD720202K8和I.MX8的PCIE_TX,PCIE_RX通过0.1uF电容相连,PCIE_CLK是直连的。) i.MX 8 Family | i.MX 8QuadMax (8QM) | 8QuadPlus i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: I.MX8 MINI的PCIE问题 现在我也是想要使用内部参考时钟,在设备树中将ext_osc属性改为了0,但是还是没有时钟输出可能是什么原因呢,使用的是Linux4.14.78版本的内核 Re: I.MX8 MINI的PCIE问题 Hi @mytemp  我们不建议客户使用内部时钟。根据我们的测试,内部时钟的抖动比标准高出约 30%。 不过内部PLL可以通过PCIe Gen 2 一致性测试,也有其他客户用内部时钟。还是建议你在测试阶段保留外部时钟,如果内部时钟无法达到你们的稳定性要求,可以切换到外部时钟。
查看全文
ImxRT 1176 LPSPI blocking function issue Hello, I’m working with LPSPI and using LPSPI_MasterTransferBlocking. Since this is a blocking function, I expect the LPSPI peripheral to be free once the transfer is complete. However, I observed something different. After the blocking transfer, I read the SR (Status Register) using LPSPI_GetStatusFlags, and the returned value was 0x1001101. Do you have any suggestions? Ideally, after the blocking transfer, the LPSPI should be idle. I’m sharing a code snapshot below for reference.  if((staus_flag & kLPSPI_ModuleBusyFlag) == kLPSPI_ModuleBusyFlag) { ret = STATUS_BUSY; PRINTF("SPI Busy, %x, %d\r\n", staus_flag, count); } else { masterXfer.txData = SpiTxData; masterXfer.rxData = SpiRxData; masterXfer.dataSize = spiTransferSize; masterXfer.configFlags = kLPSPI_MasterPcs0 | kLPSPI_MasterPcsContinuous; status = LPSPI_MasterTransferBlocking(LPSPI1, &masterXfer); ret = STATUS_SUCCESS; staus_flag = LPSPI_GetStatusFlags(IMU_SPI_IF); PRINTF("staus_flag: %x\r\n", staus_flag); count++; //sw_asm_delay_us(2U); } Re: ImxRT 1176 LPSPI blocking function issue Hi @chandan_uv , Thank you so much for your interest in our products and for using our community. Question:  After the blocking transfer, I read the SR (Status Register) using LPSPI_GetStatusFlags, and the returned value was 0x1001101. Answer: I check your LPSPI SR register value is 0x1001101, that is 0b0001 0000 0000 0001 0001 0000 0001, the TCF (Transfer Complete Flag) is 0,which means Transfer  Not complete. From IMXRT1170RM,  we can see the detail SR status TCF  description. In Master mode, indicates that all transfers have completed and that LPSPI has returned to Idle state and the transmit FIFO is empty. Question: Do you have any suggestions? Ideally, after the blocking transfer, the LPSPI should be idle. I’m sharing a code snapshot below for reference.  Answer: I suggest you can develop your project based on SDK demo. Please Verify the frame format configuration:  Make sure that the LPSPI settings (For example: Data Length, CPOL, CPHA) of the master device are exactly same to the slave device. Wish it helps you. If you still have question about it, please kindly let me know. Wish you a nice day! Best Regards MayLiu Re: ImxRT 1176 LPSPI blocking function issue BTW LPSPI1 and IMU_SPI_IF is same.
查看全文
ERR050481 on S32G platform Hi, I know that there implemented workaround for ERR050481 erratum in ATF and linux kernel, but I do not know where can get accessible file for this erratum to describe the detail of the issues like ERR050481. So would you please help to tell the erratum file for S32G platform? Thanks, Zhantao Re: ERR050481 on S32G platform Hi Depending on the S32G product you are using, you should be able to find the ERRATA documentation under the specific product page under the "Documentation" section similar to the one shown below: Please, let us know.
查看全文
i.mx RT 1175 SDRAM J-Link 启动脚本 使用 SDRAM 将 J-Link 连接/接口到 i.MX RT 1175 M7 核心时出现问题。看到一篇有 M4 代码但没有 M7 的帖子。从 NXP 文档中看到的所有内容来看,M7 首先启动。使用 J-link 或 PE Micro 编程器时,在评估板上将 SDK 示例程序运行在 SDRAM 上会失败。然而,使用内置 LS 编程器时,同一程序在评估板上运行良好。如果是使用内部存储器运行的 SDK 示例程序,那么这三个编程器都可以正常工作。
查看全文
将 IDE 调试器控制台输出捕获到本地文件 是否有内置的 IDE 方法可以将 S32 Design Studion 调试器控制台内容导出或重定向到本地文件? 我正在使用 IDE 调试器控制台显示用于捕获实时诊断信息以进行单独分析的大型数据数组(使用调试器命令,如print -array on -array-indexes on -elements unlimited -pretty off -- waitrec_m ),但我必须手动选择/复制生成的控制台文本才能将其保存在其他地方。 我希望能够更好地实现这个过程的自动化。 Eclipse IDE 使用和设置 回复:捕获 IDE 调试器控制台输出到本地文件 我终于找到了答案 - IDE 调试控制台有命令“dump”和“set logging”选项,可以将输出重定向到本地文件。 答案就在 Julián 提供的第一个链接之一中(将调试控制台重定向到文件 - NXP 社区) - 我完全错过了该链接中的参考! Julián - 抱歉,谢谢! 戴夫 回复:捕获 IDE 调试器控制台输出到本地文件 谢谢你的建议 Julián - 不幸的是,我相信这仍然依赖于 stdio 库函数的使用,根据我之前的解释,我不能在我的设计中使用这些函数。 我希望找到可以将控制台命令输出重定向到本地文件的调试器控制台命令选项。 例如,调试器控制台命令“print”支持多种命令行选项来格式化和显示程序变量和内存到控制台,但我无法识别任何将该命令输出重定向到本地文件的设置。 问候, 戴夫 回复:捕获 IDE 调试器控制台输出到本地文件 Julián - 非常感谢您抽出时间回复,我们非常感激! 不幸的是,我无法将任何 Semihosting 函数嵌入到我正在测试的代码中,因为它具有时间关键行为,会因添加 fprintf() 或类似的库调用而中断。我只有足够的吞吐能力将诊断数据直接写入基于 RAM 的数组 - 在到达断点后,我必须将捕获的数据显示到调试控制台,并且我试图从中捕获生成的控制台输出。 我已经查看了可用的调试控制台命令,但尚未确定(或理解)允许控制台输出重定向的任何内容。 无论如何,再次感谢您的建议。 戴夫
查看全文
MIMXRT1170-EVKBマルチコアの例の質問... これは、低レベルの(Linuxではない)マルチコアデバイスでの私の最初の経験なので、これは愚かな質問かもしれません... 「Getting Started with MCUXpresso SDK for MIMXRT1170-EVKB」のセクション 6.4 と 6.5 (Rev.0 — 31 December 2022)、これはSDKTOP/boards/evkbmimxrt1170/multicore_examples/hello_worldを指します。私はSDK-2-16-100_MIMXRT1170-EVKBを使用しています。また、EVKBの20ピンヘッダーにJLinkプログラマーを取り付けています。 私は初めてcm4 / cm7アプリケーションをビルド/ロード/実行することができましたが、指示が私には意味をなさないため、指示に完全には従わなかった(両方のコアでgdb / loadを実行する必要がありました)。 セクション 6.4 では、各アプリケーションを "ビルド" すると述べています。いいです;しかし、セクション6.5には次のように書かれています。プライマリ コア デバッガーは、プライマリ コア アプリケーションと補助コア アプリケーションの両方の SoC フラッシュ メモリへのフラッシュ処理を処理します。".それでよろしいですか。私は、何かを動作させるために、各コアに対して「ロード」操作(gdbを使用)を実行する必要があることがわかりました。 また、CM4のコードにマイナーチェンジをしてみましたが、プログラミングにはなっていないようです。gdbの "load"もプログラミング前にすべてを消去しますか? ここでのご意見はいただければ幸いです。 ありがとうございます Re:MIMXRT1170-EVKBマルチコアの例の質問... さて、今はわかったと思います... @Pavel_Hernandez、PDFは非常に便利でしたが、スレッドはIDEで押すべきボタンを指示する一連の命令にすぎません。物事を本当に理解しようとすると、あまり良くありません。 CM4の画像は、実際には「.core1_code」と呼ばれるセクションとしてCM7の画像に組み込まれていることがわかりました。CM7 のビルドは、以前にビルドされた CM4 イメージに依存するため、CM7 のビルド手順の 1 つは、CM4 イメージを CM7 のメモリ マップに組み込むことです。これは、cm4を使用してgdbで「ロード」を行うときに、実際のSPIフラッシュスペースにプッシュされていなかった理由を説明しています。私はこれが行われる方法があまり好きではありませんが、それは問題ありません。少なくとも今は理解しています。 どうもありがとう、大きな助け! Re:MIMXRT1170-EVKBマルチコアの例の質問... こんにちは、私の名前はPavelです、そして私はあなたのケースをサポートします、私はこれがデュアルコアプロセスについての詳細を理解するのに役立つことができるこのアプリのノートを見つけました、章2.1.2を参照してください詳細なブートフロー。 似たような議論がいくつかあり、理解するのに役立つかもしれません。 "..プライマリ コア デバッガーは、プライマリ コア アプリケーションと補助コア アプリケーションの両方の SoC フラッシュ メモリへのフラッシュ処理を処理します。" i.MX RT1170 デュアルコアアプリケーション たぶん、この他のスレッドはあなたがIDEでそれをテストするのを助けるかもしれません。 JLINKを使用してRT1170デュアルコアをデバッグする方法 - NXP Community よろしくお願いいたします パベル Re:MIMXRT1170-EVKBマルチコアの例の質問... まあ、これで問題が解決したとは言いたくありませんが、両方のコアでコードを実行することができました... 私はgdbがJLINKにフラッシュに書き込むように指示する方法に疑問を持っていたので、jlink gdbサーバーにフックされたgdbを使用する代わりに、各セクションを手動でロードする単純なjlinkスクリプトを作成しました(下記参照)。そのためには、 .elf から読み込み可能な各セクションを抽出する必要がありましたファイルを独自のバイナリファイルに入れます。 作成された各ファイルで、次のスクリプトを実行することができました。 EOEの1 デバイス=MIMXRT1176DVMAA_cm7 スピード4000 si SWDの r h ロードビン elfsect_.flash_config.bin,0x30000400 ロードビン elfsect_.ivt.bin,0x30001000 ロードビン elfsect_.core1_code.bin,0x33fc0000 ロードビン elfsect_.interrupts.bin,0x30002000 ロードビン elfsect_.text.bin,0x30002400 loadbin elfsect_。ARM.bin,0x30008d00 ロードビン elfsect_.init_array.bin,0x30008d08 ロードビン elfsect_.fini_array.bin,0x30008d0c ロードビン elfsect_.data.bin,0x30008d10 行く 出口 CM7をロードすると、うまくいきました。jlinkサーバーはダウンロードを確認したと言っていましたが、検証は失敗していたようです。 誰かが(NXPサポート)これを説明できますか? Re:MIMXRT1170-EVKBマルチコアの例の質問... 詳細情報... gdbで「load」を実行した後、JLinkGDBServerCLExeウィンドウに次のエラーが表示されることに気づきました... エラー:ターゲットの準備中にタイムアウトしました。RAMCodeは時間内に応答しませんでした。 RAMCode 側の Prepare() を実行できませんでした フラッシュ情報の決定中にエラーが発生しました (Bank @ 0x30000000)
查看全文
S32K3xx SpiBaudrateConfigRef 設定 こんにちは、 SDKs ペリフェラル ドライバの構成コンポーネント - LPSPI: 1. Lpspi → SpiExternalDevice → SpiUseBaudrateConfig → SpiBaudrateConfigRef? この設定の目的は何ですか?また、どのように設定しますか? 2. SPI ボーレート選択における SpiUseBaudrateConfig と SpiCalculatedBaudRate の違いは何ですか? 3. SPI ボーレートを設定するためのユーザーフレンドリーな方法が必要です。どうすればそれがCANますか? よろしくお願いいたします。 カルメガン C Re: S32K3xx SpiBaudrateConfigRef set こんにちは@daniel_ll 、 この件に関してプライベートメッセージをお送りしました。 Re: S32K3xx SpiBaudrateConfigRef set こんにちは、ジュリアン Jira のバグへのリンクはありますか? また、どの RTD リリースでこのバグが修正されるのか、詳しい情報はありますか?RTD 5.0.0でも同じ問題に直面している Re: S32K3xx SpiBaudrateConfigRef set こんにちは@karmegancjk 社内チームに確認したところ、これはバグです。次の RTD リリースで修正される予定です。 よろしくお願いします、 ジュリアン Re: S32K3xx SpiBaudrateConfigRef set こんにちは@karmegancjkさん、 どうやら、MCAL Spi コンポーネントのみが有効な SpiBaudRateConfigRef 値を生成します。私はプロジェクトを IP ではなく MCAL に基づいていたため、これに気づきませんでした。 これは意図されたものではないと思うSO、現時点では、SPI コンポーネントを「UseBaudrateConfig」パラメータなしで構成するか、MCAL コンポーネントを使用して参照を生成する必要があります。これが想定された動作であるかどうかを社内で確認してみます。 よろしくお願いします、 ジュリアン Re: S32K3xx SpiBaudrateConfigRef set こんにちは、 Lpspi ドライバで SpiBaudrateConfig_0 を SpiBaudrateConfigRef に割り当てることができません。 IDEs: S32DS 3.5.13。 RTD: R22_11 V4.0.0。 SpiBaudrateConfigRef で SpiBaudrateConfig_0 のパスを設定するにはどうすればよいですか? Re: S32K3xx SpiBaudrateConfigRef set こんにちは@karmegancjkさん、 すべての構成パラメータについては、それぞれのドライバのユーザー マニュアルに記載されています。「C:\NXP\S32DS.3.6.1\S32DS\ソフトウェア\PlatformSDK_S32K3\RTD\Spi_TS_T40D34M50I0R0\doc」の下RTD_SPI_UM.pdfが見つかります。 1. SpiBuadrateConfigRef は、Spi ボー レートを計算するために使用される参照ノードです。 2. SpiUseBaudrateConfig は参照ノードを使用し、SpiCalculatedBaudRate は次の式を使用します。 SpiCalculatedBaudrate = 関数クロック / (SpiPrescalerValue * (SpiScaler + 2)) 3. 既存の例「Spi_Transfer_S32K344」をベースとしてCAN使用できます。また、前述のファイルの第 3.6.13 章では、ボー レートを設定する方法が示されています。 よろしくお願いします、 ジュリアン
查看全文
Zephyr を使用した MCXN947 上の MCUBoot と Edgelock セキュア・エンクレーブ FRDM-MCXN947 ボードを使用する IoT プロジェクトで Zephyr のオープン ソース MCUBoot モジュールを使用したいのですが、キーのセキュリティを強化するために Edgelock セキュア・エンクレーブも使用したいです。MCUBoot でセキュア・エンクレーブを使用するには、MCUBoot ソースを変更する必要があるため、これは難しいという認識でよろしいでしょうか? 私の考えが正しければ、FUTURE Zephyr / MCUBoot が Edgelock セキュア・エンクレーブを使用する可能性はありますか? この改善によりセキュリティが大幅に向上するというのは正しいでしょうか?それとも、標準の Zephyr MCUBoot のキー処理で満足すべきでしょうか? Re: MCUBoot and Edgelock Secure Enclave on an MCXN947 using Zephyr @Harry_Zhangこれがいつ実現されるかについて、何かフィードバックはありますか?すぐにでなければ、Zephyr で MCUBoot を使用して最高のキー セキュリティを維持する方法について何か提案はありますか? 幸運をお祈りしています。! クラーク Re: MCUBoot and Edgelock Secure Enclave on an MCXN947 using Zephyr こんにちは@ClarkS はい、MCUBoot で EdgeLock SE を使用するのは現時点では簡単ではなく、ソースの変更やカスタム統合レイヤーが必要になると思います。 お客様のご要望を弊社の担当チームに転送させていただきます。ご提案ありがとうございます。 BR ハリー
查看全文
LPC1769 是否已过期? 您好, 目前 LPC1769 的供应情况非常糟糕。到目前为止,Mouser和Digikey已经停产了我购买的零件(LPC1769FBD100,551),法内尔甚至表示该设备已停产: 贸泽公司称有替代品,但交货期为 52 周: 恩智浦该设备的当前生产状态是什么? 谢谢。 Re: LPC1769 EOL? 您说得没错,LPC1769 的长寿计划将持续到 2024 年底。 你好@Omar_Anguiano、 快进四年,现在是 2025 年,根据产品寿命页面显示,LPC1769 已退出寿命计划。 在产品页面上,该部件仍然是"active" 。 恩智浦会将LPC1769FBD100供货多久? 谢谢。 丹尼尔 Re: LPC1769 EOL? 分销商也无法获得这些部件。 情况非常糟糕。 Re: LPC1769 EOL? 谢谢@Omar_Anguiano的回复。 你写道 不过,我们不会在论坛上对此进行更详细的讨论,敬请谅解。 很抱歉不能回答您最后的问题。 如果不是在论坛上,我在哪里可以得到问题的答案? 作为恩智浦产品的客户(尽管数量相对较少),我认为这些都是值得回答的问题。尤其是,恩智浦最近推出的其他控制器(如 LPC552*)的可用性也很低。今后,我学会了在选择控制器时不要只看技术特性,还要看是否可用。此外,选择代码包可能会对可用性产生很大的影响(例如,从HLQFP迁移到VFBGA以获得更好的可用性)。我认为,要做出正确的决定,需要与恩智浦的专家进行讨论。 干杯, Dan . Re: LPC1769 EOL? 考虑到半导体供应的整体工业形势,你关于可用性的问题是可以理解的。许多专业出版物中都发表了许多关于这个问题的分析文章,它们为我们行业在去年发生的最初触发信号和动态提供了良好的背景信息。 不过,我们不会在论坛上对此进行更详细的讨论,敬请谅解。 很抱歉不能回答您最后的问题。 致以最崇高的敬意, Omar Re: LPC1769 EOL? 亲爱的@Omar_Anguiano、 我很高兴我在 1 月底订购了我的 LPC1769 设备。现在,大约一个月后,该设备不再可用。我不敢想象,如果我当时没有下订单,会发生什么。这完全是运气。 正如你所确认的那样,该设备尚未停产,但是,52 周的交货时间对我来说还是出乎意料的。 预计恩智浦设备会缺货一整年,这通常吗? 我能指望恩智浦在大约一年后再次推出这款设备吗? 谢谢。 丹 Re: LPC1769 EOL? Hello 您说得没错,LPC1769 的长寿计划将持续到 2024 年底。 LPC1769FBD100,551 和 LPC1769FBD100K 的区别在于包装。 请告诉我这是否回答了您的问题,如果您有更多问题,请随时咨询我。 致以最崇高的敬意, Omar Re: LPC1769 EOL? @Omar_AnguianoOmar,谢谢,您能否确认我们的计算结果正确,LPC1769 的长寿计划将持续到 2024 年底? LPC1769FBD100,551 和 LPC1769FBD100K 有什么区别?产品数据手册中没有提及 " K " 零件号。 Re: LPC1769 EOL? Hello LPC1769 并非 EOL,该部件属于长寿命计划,因此在该计划结束之前,该部件不会成为 EOL。 如果您有更多问题,请随时与我联系。 致以最崇高的敬意, Omar Re: LPC1769 EOL? 你可能需要直接联系恩智浦或官方代理商,以获得澄清。 通常情况下,硅料供应商会向客户发送信息,告知即将发生的 EOL 事件和可能的最后购买选择。我(即我的公司)正在为 90 年代中期的一个 MCU 进行一项研究。每种类型的数量都在 4 位数范围内,因此数量并不多。 Re: LPC1769 EOL? 我也没想到它要到2024年才会停产,但是,我认为一款一年才能上市的设备已经接近停产了。至少这种供应短缺是非常出人意料的,促使我尽早更换现有设计中的这款处理器。 Re: LPC1769 EOL? 据此 https://www.nxp.com/products/product-information/product-longevity:PRDCT_LONGEVITY_HM lpc1769fbd100 自 2009 年 12 月用上市以来的使用寿命为 15 年...
查看全文
IMX93QSB の Flexspi_nor_polling_transfer SDKs の例におけるベンダー ID の問題 こんにちは、みんな、 imx93-qsb に似たカスタム ボードのペリフェラルをテストするために、VSCode 用の MCUXpresso を使用しています。SDK プロジェクト「flexspi_nor_polling_transfer」から始めて、例で使用されているチップMT25QU512ABB と非常によく似た NOR フラッシュ MT25QU01GBBB8E12 の機能をテストしたいと思います。 関数flexspi_nor_get_vendor_idでは0x20 ではなく 0xFF が返され、最後の操作は正常に完了します。         例と同じ SPI ペリフェラル (SD3 パッドの flexSPI1) を使用していますが、ID ベンダーを正しく読み取れない理由がわかりません。誰か助けてくれませんか? Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB ちなみに、拡張 SPI モードで IS25WX256 を使用する場合、Read ID コマンド 0x9E でも問題が発生します。コマンドは `FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR, kFLEXSPI_1PAD, 0x9e, kFLEXSPI_Command_READ_SDR, kFLEXSPI_1PAD, 4),` です。使用するたびに `0x888cadce` を読み取ります。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは@AldoG 、 vendorID 値で何が起こっているかを理解するために、flexspi_nor_get_vendor_id 関数内に PRINTF コマンドをいくつか配置してみました。 出力は次のようになります。 また、flashXfer.seqIndex を 4 * NOR_CMD_LUT_SEQ_IDX_READID に変更してみましたが、出力は次のように変わりました。 関数内を何度も確認することが役に立つかどうかはわかりません。おそらく問題は seqIndex 値自体にあります。あなたの考えを聞かせてください。 よろしくお願いいたします。 ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 私が推奨した追加事項からわかるように、あなたはまさにその例をそのまま使用しています。 メモリが正しく機能していないというよりは、ID を取得するための LUT コマンドが正しく機能していないのではないかと思います。そのため、正しく送信されているかどうかを確認できるかどうかを言及しました。 よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 次の UUU コマンドを使用して nor-flash をターゲットとするブートローダーを配置できたため、フラッシュ メモリが正常に動作していることはほぼ確実です。 uuu.exe -b qspi imx-boot-imx93-11x11-lpddr4x-evk-sd.bin-flash_singleboot FlexSPI Serial NOR でブート構成を設定すると、ブートローダが正しく実行されていることがわかります。しかし、なぜこのプロジェクトを MCUXpresso for VScode で使用すると問題が発生するのか、まだわかりません。 ご協力いただける場合はお知らせください。iMX93 の M33 コアでも作業する必要があります。 ありがとうございます ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 共有していただきありがとうございます。注意深く確認させていただきます。 ところで、ハードウェア上の信号を確認する方法はありますか? よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、アルドさん。 助けてくれてありがとう。残念ながら、この LUT の変更は解決策ではなく、ベンダー ID では依然として 0xff が読み取られます。C コード全体を皆さんと共有します。 /* * 著作権 (c) 2016、Freescale Semiconductor, Inc. * 著作権 2016-2018 NXP * 無断転載を禁じます。 * * * SPDXライセンス識別子: BSD-3条項 */  #include "pin_mux.h"  #include "clock_config.h"  #include "board.h"  #include "fsl_debug_console.h"  #include "fsl_rgpio.h"  #include "fsl_lpi2c.h"  #include "fsl_iomuxc.h"  #include "fsl_lpi2c.c" #include "fsl_flexspi.h" #include "app.h" #include "fsl_debug_console.h" #include "fsl_cache.h" #include "pin_mux.h" #include "clock_config.h" #include "board.h" #include "fsl_common.h" /**************************************************************************************** * 定義 **********************************************************************************/ /**************************************************************************************** * プロトタイプ **********************************************************************************/ /**************************************************************************************** * 変数 **********************************************************************************/ /* プログラムデータバッファは4バイトのアラインメントにする必要があります。これにより、このメモリ領域が次のように構成されているため、バスフォールトをCAN。 MPU によるデバイス メモリ。*/ SDK_ALIGN (静的uint8_t s_nor_program_buffer [ 256 ], 4 ); 静的uint8_t s_nor_read_buffer [ 256 ]; extern status_t flexspi_nor_flash_erase_sector ( FLEXSPI_Type *ベース、 uint32_tアドレス); extern status_t flexspi_nor_flash_page_program ( FLEXSPI_Type * base 、 uint32_t dstAddr 、 const uint32_t * src ); 外部status_t flexspi_nor_get_vendor_id ( FLEXSPI_Type *ベース、 uint8_t *ベンダーID ); 外部status_t flexspi_nor_enable_quad_mode ( FLEXSPI_Type *ベース); 外部status_t flexspi_nor_erase_chip ( FLEXSPI_Type *ベース); 外部void flexspi_nor_flash_init ( FLEXSPI_Type *ベース); /**************************************************************************************** * コード **********************************************************************************/ flexspi_device_config_tデバイス構成= { . flexspiRootClk       = 12000000 , //12 MHz、ノイズあたりOK .フラッシュサイズ            = FLASH_SIZE 、 . CS間隔単位       = kFLEXSPI_CsIntervalUnit1SckCycle 、 . CS間隔           = 2 、 .CSホールド時間           = 3 、 . CSセットアップ時間          = 3 、 .データ有効時間        = 0 、 .列スペース          = 0 、 . enableWordAddress    = 0 、 . AWRSeqIndex          = 0 、 . AWRシーケンス番号         = 0 、 . ARDSeqインデックス          = NOR_CMD_LUT_SEQ_IDX_READ 、 . ARDシーケンス番号         = 1 、 . AHBWriteWaitUnit     = kFLEXSPI_AhbWriteWaitUnit2AhbCycle 、 . AHBWriteWaitInterval = 0 , }; const uint32_t customLUT [ CUSTOM_LUT_LENGTH ] = { /* 高速読み取りクアッドモード -SDR */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READ + 0 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0xEB 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_READ + 1 ] = FLEXSPI_LUT_SEQ (         kFLEXSPI_Command_DUMMY_SDR 、 kFLEXSPI_4PAD 、 0x0A 、 kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x04 )、 /* ステータスレジスタの読み取り */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0xB5 、 kFLEXSPI_Command_DUMMY_SDR 、 kFLEXSPI_4PAD 、 0x0 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUSREG + 1 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x04 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 )、 /* ID を読み取る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READID ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR , kFLEXSPI_1PAD , 0x9E , kFLEXSPI_Command_READ_SDR , kFLEXSPI_1PAD , 0x04 ), // 0x9F から 0X9E に変更 /* 書き込み可能4パッド */ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE_OPI ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x06 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x00 )、 /* 書き込み許可 */ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITEENABLE ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x06 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0 )、 /* セクタ消去 */ [ 4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x20 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 /* プログラム */ [ 4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x32 、 kFLEXSPI_Command_RADDR_SDR 、 kFLEXSPI_4PAD 、 0x18 )、 [ 4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD + 1 ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_WRITE_SDR 、 kFLEXSPI_4PAD 、 0x01 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_4PAD 、 0 )、 /* クアッドモードに入る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_ENABLEQUAD ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_1PAD 、 0x35 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x00 )、 /* ダミー書き込み。AHB 書き込みコマンドがトリガーされたときには何もしません。*/ [ 4 * NOR_CMD_LUT_SEQ_IDX_WRITE ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 、 kFLEXSPI_Command_STOP 、 kFLEXSPI_1PAD 、 0x0 )、 /* Qual SDR読み取りを使用してステータスレジスタを読み取る */ [ 4 * NOR_CMD_LUT_SEQ_IDX_READSTATUS_OPI ] =         FLEXSPI_LUT_SEQ ( kFLEXSPI_Command_SDR 、 kFLEXSPI_4PAD 、 0x05 、 kFLEXSPI_Command_READ_SDR 、 kFLEXSPI_4PAD 、 0x02 )、 }; int main ( void ) {     uint32_t i = 0 ;     status_tステータス;     uint8_tベンダーID = 0 ;     pcal6524_handle_tハンドル; /* clang-format オフ */     const clock_root_config_t lpi2cClkCfg = { .clockOff = false 、​ . mux = 0 , // 24MHz発振器ソース . div = 1 }; /* clang-format オン */     BOARD_ConfigMPU ();     BOARD_InitBootPins ();     BOARD_BootClockRUN ();     BOARD_InitDebugConsole ();     CLOCK_SetRootClock ( BOARD_PCAL6524_I2C_CLOCK_ROOT 、 & lpi2cClkCfg );     CLOCK_EnableClock ( BOARD_PCAL6524_I2C_CLOCK_GATE ); /* M.2 nor フラッシュカードに 3.3V を設定します */     BOARD_InitPCAL6524 ( &ハンドル);     PCAL6524_SetDirection ( &ハンドル, ( 1 << BOARD_PCAL6524_EXT1_PWREN ), kPCAL6524_Output );     PCAL6524_SetPins ( &ハンドル, ( 1 << BOARD_PCAL6524_EXT1_PWREN ));     flexspi_nor_flash_init ( EXAMPLE_FLEXSPI );     PRINTF ( " \r\n FLEXSPI の例を開始しました! \r\n " ); /* ベンダーIDを取得します。 */     ステータス= flexspi_nor_get_vendor_id ( EXAMPLE_FLEXSPI 、 & vendorID );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    }     PRINTF ( "ベンダーID: 0x %x \r\n " , vendorID ); #if ! (定義済み( XIP_EXTERNAL_FLASH )) /* チップ全体を消去します。*/     PRINTF ( "FlexSPI 経由でチップ全体を消去しています... \r\n " ); ステータス= flexspi_nor_erase_chip (EXAMPLE_FLEXSPI);     if (ステータス!= kStatus_Success)     {         ステータスを返します。    }     PRINTF ( "消去が完了しました! \r\n " ); #endif /* クアッドモードに入ります。*/     ステータス= flexspi_nor_enable_quad_mode ( EXAMPLE_FLEXSPI );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    } /* セクタを消去します。*/     PRINTF ( "FlexSPI 経由のシリアル NOR を消去しています... \r\n " );     ステータス= flexspi_nor_flash_erase_sector ( EXAMPLE_FLEXSPI 、 EXAMPLE_SECTOR * SECTOR_SIZE );     if (ステータス!= kStatus_Success )     {         PRINTF ( "セクター消去失敗! \r\n " );         - 1を返します。    }     memset ( s_nor_program_buffer 、 0xFFU 、 sizeof ( s_nor_program_buffer ));     DCACHE_InvalidateByRange ( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE 、 FLASH_PAGE_SIZE );     memcpy ( s_nor_read_buffer , ( void * )( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE ),            sizeof ( s_nor_read_buffer ));     memcmp ()の場合、 s_nor_program_buffer 、 s_nor_read_buffer 、 sizeof ( )の場合、 s_nor_program_bufferは、次のようになります。     {         PRINTF ( "データを消去 - 読み取ったデータ値が正しくありません! \r\n " );         - 1を返します。    }     それ以外     {         PRINTF ( "データの消去 - 正常に完了しました。 \r\n " );    }     ( i = 0 ; i < 0xFFU ; i ++ )の場合     {         s_nor_program_buffer [ i ] = i ;    }     ステータス=         flexspi_nor_flash_page_program ( EXAMPLE_FLEXSPI 、 EXAMPLE_SECTOR * SECTOR_SIZE 、 ( void * ) s_nor_program_buffer );     if (ステータス!= kStatus_Success )     {         PRINTF ( "ページ プログラム エラー! \r\n " );         - 1を返します。    }     DCACHE_InvalidateByRange ( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE 、 FLASH_PAGE_SIZE );     memcpy ( s_nor_read_buffer , ( void * )( EXAMPLE_FLEXSPI_AMBA_BASE + EXAMPLE_SECTOR * SECTOR_SIZE ),            sizeof ( s_nor_read_buffer ));     memcmp ( s_nor_read_buffer 、 s_nor_program_buffer 、 sizeof ( s_nor_program_buffer ) ) != 0の場合     {         PRINTF ( "プログラムデータ - 読み取ったデータ値が正しくありません! \r\n " );         - 1を返します。    }     それ以外     {         PRINTF ( "プログラムデータ - 正常に実行されました。 \r\n " );    }     ステータス= flexspi_nor_get_vendor_id ( EXAMPLE_FLEXSPI 、 & vendorID );     if (ステータス!= kStatus_Success )     {         ステータスを返します。    }     PRINTF ( "ベンダーID: 0x %x \r\n " , vendorID );     PRINTF ( "ステータス: %d \r\n " , status );     一方( 1 )     {    } } Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 テストしていただきありがとうございます。READ ID の実行時に LUT シーケンスが正しくない可能性が最も高いため、LUT で次の変更を試してください。 /* ID を読み取る */ [4 * NOR_CMD_LUT_SEQ_IDX_READID] = FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR、kFLEXSPI_1PAD、 0x9E 、kFLEXSPI_Command_READ_SDR、kFLEXSPI_1PAD、0x04)、 ぜひお試しいただき、結果を教えてください。 よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB はい、ご提案どおりに次のコードを追加しました: 残念ながら、CANのとおり何も変わっていません。 @AldoG他にアイデアはありますか? ありがとうございます ボブ Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 ハードウェアはすべて正常に見えますが、データがプログラムされた後にベンダー ID を読み取る機能を追加していただけますか? よろしくお願いいたします。 アルド。 Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、アルドさん。 ご返信ありがとうございます。これらは接続です Re: Vendor ID issue in Flexspi_nor_polling_transfer SDK example for IMX93QSB こんにちは、 これは、SPI メモリ上でリセット信号が正しく処理されていないことが原因で発生する可能性があります。メモリをどのように接続しているか教えていただけますか? 小さな回路図を共有していただければ、本当に助かります。 よろしくお願いいたします。 アルド。
查看全文
ADCチャネル割り当てについて <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、コミュニティの皆様 データシートの表99のADC1_IN0~ADC1_IN3に割り当てられます。 一方、リファレンスマニュアルのADCメモリマップでは、ADC1にはCH_AからCH_Dがあります。 以下をサポートするために、チャネル 0 を CHA_SEL、チャネル 1 を CHB_SEL、チャネル 2 を CHC_SEL、チャネル 3 を CHD_SEL に割り当てることは可能ですか? IN0-CH_A IN1-CH_B IN2-CH_C IN3-CH_D よろしくお願いいたします www.freescale.comのサイトに入って下さい i.MX7Dual About ADC channel assignment こんにちは、igorpadykovさん。 解決策なのですが、理解できないSO質問があります。 データシートのピン割り当てによると、ADC1_IN0 から ADC2_IN3 までの 8 つの物理入力があります。 リファレンスマニュアルでは、ADCx_CH_A_CFG1 の CHA_SEL の範囲は 0 ~ 15 です。 ADC1_INx と Channelx は何に対応していますか? それとも無関係でしょうか? ADC2_IN0はどのように設定すればよいでしょうか? よろしくお願いいたします。 Re: About ADC channel assignment <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは後藤 はい、可能です。14.1.1節で説明したように概要 i.MX 7デュアルアプリケーションプロセッサリファレンスマニュアル 「ADCは最大5つのロジックグループ(ChA / ChB / ChC / ChD / SW)をサポートします。各グループは1つのチャンネルを選択できます 0 〜 15 の物理チャネル。 よろしくお願いします イゴール ----------------------------------------------------------------------------------------------------------------------- 注: この投稿で質問が解決した場合は、「正解」ボタンをクリックしてください。ありがとう! -----------------------------------------------------------------------------------------------------------------------
查看全文