Multi Source Translation Content

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Multi Source Translation Content

Discussions

Sort by:
S32Z RTU0 core0 性能问题 我在 S32Z270 RTU0 内核 0 (R52) 上运行一些测试代码,RTU0_CORE_CLK 设置为 1GHz,执行时间似乎过长。 相比之下,我在 SS32K388 内核 0 (CM7) 上运行相同的代码,内核时钟设置为 320MHz。 鉴于时钟频率的提高,我本以为执行速度会更快一些,但执行时间反而更长了。 两个二进制文件的版本/编译标志保持不变(参见随附的 txt 文件 buildinfo.h) (1) 由于 S32 配置工具中的时钟配置对于 S32Z 来说有点复杂,我如何才能确保 RTU0 内核 0 的时钟频率按计划为 1GHz? 我已经通过 MC_CGM_3_MUX4_CSC(例如,SEL_CTL = 0x3D)将 RTU0_CORE_DIV2_CLK 路由到 CLKOUT_4(BGA594 的 PAD_040),包括 MC_CGM_3_MUX4_DC_0(例如,DIV = 0x9)中为 10 的分频器。另请参见所附的登记册读数。 如果我在 CLKOUT_4 测量到 50MHz,我是否可以假定 (a) RTU0_CORE_DIV2_CLK 为 500MHz,(b) RTU0_CORE_CLK 为 1GHz? (2) 我使用 S32Z RTD2.0.1 测量了引脚写入 GPIO 的执行时间,并测量了示波器通道 CH5 - TESTFLAG 的高/低时间,大约为 3.4us。您是否有可能确认一下它们看起来是正常还是太慢了? (3) 我不知道我错过了什么。     Re: S32Z RTU0 core0 performance issue 随函附上包装标记的照片。 0   Re: S32Z RTU0 core0 performance issue 你好,@Joey_z、 感谢您的快速回复。 下面是我对这些问题的回答: 1) 我使用的是 S32Z2XX 主板 + S32Z2XX 子板的组合。 a) S32ZXX 主板 X-S32X-MB A 版 b) S32ZXX 子板 SCH-50588 REV B2 / 700-50588 REV A2 2) 代码使用 S32DS 版本 3.6.7 Build 260420 进行编译和链接。使用 S32DS 的先前版本(例如版本 3.6.6 或 3.6.5)时没有任何变化。我正在为 S32Z2XX 使用 RTD2.0.1。 3) 我会使用 DM 发送项目副本。 Re: S32Z RTU0 core0 performance issue 你好,德克-埃兹勒 感谢您与我们联系。 1. 你使用开发板还是客户板? 2.您使用的是 S32DS 的 IDE 吗?您测试的 IDE 版本是什么? 3.能否与我分享您的测试代码? BR 乔伊 Re: S32Z RTU0 core0 performance issue 你好,德克-埃茨勒 感谢您的答复和详细资料。 我会帮你检查,并在晚些时候回复你。 BR 乔伊 Re: S32Z RTU0 core0 performance issue 你好,德克-埃茨勒 抱歉,回复晚了。 (1) 我已经通过 MC_CGM_3_MUX4_CSC(例如,SEL_CTL = 0x3D)将 RTU0_CORE_DIV2_CLK 路由到 CLKOUT_4(BGA594 的 PAD_040),包括 MC_CGM_3_MUX4_DC_0 中的分频器 10(例如,DIV = 0x9)。另请参见所附的登记册读数。如果我在 CLKOUT_4 测量到 50MHz,我是否可以假定 (a) RTU0_CORE_DIV2_CLK 为 500MHz,(b) RTU0_CORE_CLK 为 1GHz? >>>关于这个问题,数字 7 被分配给 RTU0_CORE_DIV2_CLK,您还应通过编程 GPR3.CLKOUT4SE 来设置该值。您能确认一下是否设置了这个寄存器吗? BR 乔伊 Re: S32Z RTU0 core0 performance issue 你好@Joey_z 关于这个问题: >>>关于这个问题,数字 7 被分配给 RTU0_CORE_DIV2_CLK,您还应通过编程 GPR3.CLKOUT4SE 来设置该值。 您能确认一下是否设置了这个寄存器吗? 我检查了 GPR3.CLKOUT4SEL[MUXSEL] 的寄存器设置,该寄存器设置为 7,用于在相应的多路复用器中选择 RTU0_CORE_DIV2_CLK。 Re: S32Z RTU0 core0 performance issue 你好,@Joey_z、 我不确定我之前的留言是否已被确认为回复。 我检查了 GPR3.CLKOUT4SEL[MUXSEL]是否设置为 0x7,因此RTU0_CORE_DIV2_CLK 通过多路复用器路由。 使用所述配置并在输出引脚上看到 50MHz,我推测 RTU0 内核的时钟频率为 1GHz。 如果内核频率设置为 1GHz,但我仍然没有看到预期的性能(例如,使用 CoreMark 测试台),还有什么其他不正确的配置吗? 如何检查缓存配置是否正确? 我查看了汇编器启动脚本和使用过的链接器脚本,没有发现任何可疑之处。 Re: S32Z RTU0 core0 performance issue 你好,德克-埃茨勒 感谢您的答复和详细资料。 您可以尝试参考 AN14245 的第 3、4 章来检查缓存配置。 高速缓存机制有助于提高内存性能。您可以下载以下图片。 此外,GPIO 翻转到测量时间,主要反映了外设的"延迟" 访问路径,但会对 CPU 内核运算性能产生偏差。另外,在此应用程序中包含CoreMark的内容,您可以作为测试的参考。 BR 乔伊 Re: S32Z RTU0 core0 performance issue 你好,@Joey_z、 谢谢,我将阅读上述应用笔记(AN14245 S32ZE 安全可靠的高性能实时处理器)的第 3 章和第 4 章,了解缓存的正确设置。 顺便提一句,获得的 CoreMark 分数太低,这也是支持案例的起因。
View full article
How do I convert the voltage of digital signals? (Japanese blog) 0. Table of Contents 0. Table of Contents 1. What is a voltage level translator? 2. Digital signals 2.1 Various Digital Signals 2.2 CMOS and TTL: Logic level signals using simple voltage HIGH and LOW 2.3 Input/Output Voltage Specification: VOH/VOL and VIH/VIL 2.3.1 Output voltage specifications: VOH and VOL 2.3.2 Input voltage specifications: VIH and VIL 2.3.3 The relationship between VOH/VOL and VIH/VIL 3. Basic voltage level conversion method: One-way signal conversion 3.1 Examples where conversion is not necessary even if the chip's power supply voltage is different. Column: How are the TTL values VIH(min) = 2.0V and VIL(max) = 0.8V determined? 3.2 Examples requiring conversion 3.2.1 Conversion using open-drain output 3.2.2 Conversion using standard logic (general-purpose logic) chips 4. Conversion of bidirectional signals requiring automatic direction switching. 4.1 Bidirectional conversion using a single MOS transistor 4.2 Bidirectional conversion using dedicated equipment 4.2.1 I²C signal voltage conversion chip 4.2.2 High-speed bidirectional open-drain signal-to-voltage conversion chip 4.2.3 Bidirectional push-pull signal-to-voltage converter chip 4.2.4 I3C signal voltage converter chip 4.2.5 Buffer-based conversion 5. Summary 5.1 Comparison of methods/part numbers introduced in the blog 6. Reference materials 1. What is a voltage level translator? When connecting digital circuits, you can simply connect the signal lines directly... That's not the case; if the " logic level voltage " doesn't match, it may not work, become unstable, or in the worst case, damage the chip. That's where a voltage level translator (also called a voltage level shifter) comes in handy. A voltage level translator is a circuit that allows signals to be exchanged between digital circuits with different power supply voltages. For example, it is needed in the following cases: 3.3V microcontroller ↔︎ 5V sensor connection Connecting a 1.8V FPGA to 3.3V peripheral devices Figure 1: Differences in signal voltage   This blog explains the differences in voltage levels between various types of logic circuits used in digital circuits (*TTL, *LVTTL, *CMOS), and the important meanings of VOH / VOL / VIH / VIL for determining them. Furthermore, it explains which voltage level translator to choose from among various conversion methods. Furthermore, this blog will look at specific examples of voltage level translators that automatically detect and convert the direction of a signal . NXP also offers voltage level translators for SD cards/SIM cards and application-specific translators such as GTL↔︎TTL level conversion, but this blog will focus on products targeted at general-purpose or serial bus applications. *TTL (Transistor-Transistor Logic) *LVTTL (Low Voltage Transistor-Transistor Logic) *CMOS (Complementary Metal-Oxide-Semiconductor) *GTL (Gunning Transceiver Logic) 2. Digital signals   2.1 Various Digital Signals So-called "digital signals" are electrical representations of logic levels 1 and 0. Historically, there have been various circuit design methods for handling these logic levels 1 and 0. These include methods that represent logic levels with simple voltage HIGH and LOW, and methods that use voltage differences to represent HIGH/LOW. TTL simply represents HIGH/LOW as 5V/0V. Further reducing the voltage of TTL to 3.3V/0V, such as LVTTL , are systems where the voltage level is determined based on a bipolar transistor circuit. Similarly, ECL (Electronic Classification) uses bipolar transistors but employs a negative power supply to implement low-amplitude, differential operation logic levels, resulting in higher speeds. GTL (Global Transistor Lapping) uses a reference voltage to transmit HIGH/LOW signals with low-amplitude single-ended signals, etc. Furthermore, even with a simple HIGH/LOW representation, the 4000 series of CMOS general-purpose logic, developed with the aim of reducing power consumption, allowed the use of 3V to 18V as the HIGH level. https://en.wikipedia.org/wiki/Logic_family This blog will explain how to handle voltage levels in TTL (LVTTL) and CMOS, which represent logic using simple HIGH and LOW voltages , among the various logic levels mentioned above. Other signal conversions utilize dedicated chips and are therefore not covered here. In addition, in recent years, semiconductor technology has become smaller, faster, and more power-efficient, and the voltage used for power supplies has been decreasing. For this reason, voltage level translators, which bridge the signal voltage difference, have become particularly important. Figure 2: Signal waveform - Voltage levels (HIGH/LOW) represent logic levels.   2.2 CMOS and TTL: Logic level signals using simple voltage HIGH and LOW In digital circuits, simple voltage-based logic level signals using HIGH and LOW typically use the power supply voltage for HIGH and 0V for LOW. As long as the HIGH/LOW voltage levels are the same, the signals can be transmitted even if the power supply voltages are different. For example, TTL (LVTTL) interprets an input signal as HIGH if it is 2.0V or higher, and LOW if it is 0.8V or lower. Because of this convention, the HIGH/LOW voltage levels of TTL signals do not change even if the power supply voltages are different. On the other hand, CMOS defines HIGH/LOW based on half the power supply voltage. Therefore, the HIGH/LOW voltage levels of CMOS change when the power supply voltage is different. Figure 3: Input signal voltage specification   2.3 Input/Output Voltage Specification: V OH / V OL and V IH / V IL In digital circuits, the voltages output as HIGH and LOW , and the voltage used to determine whether an input signal is HIGH or LOW, are specified. These are defined in the specifications of each chip used, so you need to check the datasheet. V OH : High-level output voltage VOL : Low-level output voltage V IH : High-level input voltage V IL : Low-level input voltage 2.3.1 Output voltage specifications: V OH and V OL When considering the output, you must take into account the current required when outputting HIGH/LOW signals. The current will increase or decrease depending on the load. The voltage that can be guaranteed at the maximum outflow current with HIGH output is called VOH (min) , and the voltage that can be guaranteed at the maximum inflow current with LOW output is called VOL (max) . V OH (min) is the voltage output when the upper transistor in the circuit's output stage is turned ON. This transistor has a resistance called "ON resistance". When a large current flows out of a transistor, a voltage is generated equal to "the transistor's resistance x the current flowing through it". This causes the output voltage to drop below the power supply voltage by that amount, resulting in a low VOH . Therefore, VOH (min) is the minimum voltage that can be guaranteed when the maximum expected outflow current is reached. Figure 4: Digital signal output circuit (push-pull)   Figure 5: HIGH output voltage varies depending on the load.   VOL is the opposite. When the lower transistor in the output stage of the circuit is turned ON, if the incoming current is large, the output will rise above 0V due to the voltage generated by the ON resistance of the transistor, as described above. Taking this into consideration, VOL (max) is the maximum voltage that can be guaranteed when the maximum incoming current is anticipated. Figure 6: LOW output voltage also changes depending on the load.   2.3.2 Input voltage specifications: V IH and V IL The input has voltage levels to determine HIGH and LOW : V IH (min) and V IL (max) . If the voltage is above V IH (min), it is judged as HIGH; if it is below V IL (max), it is judged as LOW. In CMOS inputs, half the power supply voltage serves as the reference for HIGH and LOW, but this is not directly used as V IH (min) and V IL (max). This is because the threshold can fluctuate due to variations between chips. Also, to mitigate glitches caused by noise on slow-rising signals appearing in the output, it is common practice to incorporate hysteresis into the input. For these reasons, V IH (min) and V IL (max) are defined with a certain voltage difference. 2.3.3 The relationship between VOH / VOL and VIH / VIL For normal signal exchange to occur, the relationship between the output and input must satisfy the following equation. HIGH level: V OH (min) > V IH (min) LOW level: VOL (max) < VIIL (max) If this relationship is maintained, the output circuit can correctly transmit HIGH/LOW signals to the next input circuit. Furthermore, the voltage difference between them, "V OH (min) - V IH (min)" and "V IL (max) - V OL (max)," becomes the " noise margin " and serves as a guideline for maintaining high noise immunity. Figure 7: V OH (min) / V OL (max) and V IH (min) / V IL (max) 3. Basic voltage level conversion method: One-way signal conversion   3.1 Examples where conversion is not necessary even if the chip's power supply voltage is different. Voltage level conversion is generally not necessary when the relationships "V OH (min) > V IH (min)" and "V OL (max) < V IL (max)" hold true. For example, although TTL and LVTTL use different power supply voltages for their respective chips, the input and output voltage specifications are the same . In both TTL (5V) and LVTTL (3.3V), V OH (min) is 2.4V and V OL (max) is 0.4V. Since V IH (min)/V IL (max) are also 2.0V/0.8V in both cases, they can be connected to each other without any problems. However, caution is required if the output voltage is higher than the power supply voltage of the input chip. If the output chip uses a 5V power supply and the input uses a 3.3V power supply, the input must support " 5V tolerant input ". A 5V tolerant input is an input that can operate without problems even when a 5V HIGH signal is connected to the input of a chip that operates on a 3.3V power supply voltage. While typical chip inputs have ESD protection circuits to protect against static electricity, if this ESD protection circuit is configured as shown in the following diagram, a 5V input can cause current to flow back from the input to the 3.3V power supply, potentially damaging the chip. A 5V tolerant input is designed to prevent such problems. Tolerant inputs do not lack ESD protection; they incorporate an ESD protection circuit that is structured to handle signals higher than the power supply voltage without causing problems. ESD protection diodes like the one shown in Figure 7 can also cause problems when the power to the input chip is turned off. In systems where the power to each chip is controlled individually, the output signal may feed back into the power supply even when the input chip is off, causing the input chip to operate. Figure 7: ESD protection diode - non-tolerant input Column: How are the V IH (min) = 2.0V and V IL (max) = 0.8V determined for TTL? While the input threshold of CMOS is based on the midpoint of the power supply voltage (VCC/2), the V IH (min)/V IL (max) of TTL is 2.0V/0.8V, which is not a particularly neat ratio with respect to the power supply voltage (5V). This is related to the fact that the input stage of TTL is composed of bipolar transistors. Example of the internal circuit of a standard TTL logic IC: SN7400 (2-input NAND). This information was included in the "Latest General-Purpose Logic Device Specifications Table 1988" (CQ Publishing). A typical TTL gate's input stage consists of a multiple emitter input transistor and a subsequent phase splitter transistor, both connected in series. The "switching threshold," at which the gate actually begins to react, is determined by the forward voltage of the PN junctions in these two stages. Since the forward voltage of a single silicon PN junction is approximately 0.6 to 0.7V, the combined forward voltage of the two stages is approximately 1.3 to 1.5V, which is the effective switching threshold for a TTL gate. However, this value of approximately 1.4V is merely a "typical value," and it will fluctuate from lot to lot and from condition to condition due to individual differences and variations in temperature. Therefore, the specified values V IH (min) and V IL (max) on the datasheet are defined as guaranteed values, with sufficient margins above and below this typical value of approximately 1.4V, meaning that "if it drops to this level, it can be reliably determined to be LOW (V IL (max) = 0.8V)" and "if it rises to this level, it can be reliably determined to be HIGH (V IH (min) = 2.0V)." Furthermore, this value is not determined in isolation, but is designed taking into account the relationship between VOH and VOL , as explained in Section 2.3.3. In standard TTL, due to the output stage configuration, the HIGH output is not the power supply voltage, but a slightly lower voltage (lower by the voltage generated by the 130Ω resistor, transistor, and diode in the circuit example above) (VOH(min)=2.4V). When this is combined with VOL(max)=0.4V, HIGH noise margin: V OH (min) − V IH (min) = 2.4 − 2.0 = 0.4V Low-side noise margin: V IL (max) − V OL (max) = 0.8 − 0.4 = 0.4V As shown, it is designed to ensure a noise margin of 0.4V symmetrically above and below. In other words, the 2.0V/0.8V figures for TTL, which may seem "odd" relative to the power supply voltage, are actually reasonable values derived from two requirements: the physical reality of the bipolar transistor junction voltage and the noise margin design. This image shows an SN7420 (4-input NAND) with three input pins set to HIGH and one pin receiving a 100kHz triangular wave (ch1). The output under no load (ch2) is less than 4V when HIGH (Vcc=5V). The circuit introduced in this column is an example of a standard TTL without a designation (such as 74 LS 00 or 74 HC 00, without LS/HC prefixes; sometimes called "vanilla TTL" in English), but the reason why the V IH /V IL specifications are the same (bipolar junction characteristics of the input stage) is common to other TTL families such as the 74LS.   3.2 Examples requiring conversion   While TTL and LVTTL connections are possible because the voltage levels are aligned, mismatches in logic levels often occur when connecting CMOS chips with different power supply voltages, or when connecting a CMOS chip to a TTL chip. This occurs when the aforementioned relationship "V OH (min) > V IH (min)" and "V OL (max) < V IL (max)" does not hold true, or when the difference becomes too small, resulting in insufficient noise margin. A voltage level translator solves this problem. Figure 9: Example of mismatched logic levels (1): Insufficient HIGH voltage input   Figure 10: Example of mismatched logic levels (2): Insufficient LOW voltage is input.     3.2.1 Conversion using open-drain output There are ways to easily adjust voltage levels without using a voltage level conversion chip. If the signal direction is fixed from the output chip to the input chip and does not switch, then this method involves making the HIGH output an open-drain output to match the input voltage. An open-drain output is a configuration in which the upper transistor of the output stage of a digital circuit is absent, and the HIGH voltage is obtained by a pull-up resistor connected to the power supply voltage of the input chip . Figure 11: Digital signal output circuit (open drain)   Open drains are a simple and inexpensive method, but there are a few things to keep in mind . First, the output side must be capable of open-drain output. Many microcontrollers' GPIO pins can provide this type of output through configuration. First, the output side must be capable of open-drain output. Many microcontrollers' GPIO pins can provide this output through configuration. If the output is fixed to push-pull output and cannot be configured for open-drain output, an external transistor or similar device will be needed to convert it to open-drain output. Furthermore, the selection of pull-up resistors is also important. A pull-up resistor is necessary to obtain a HIGH voltage, but if the resistance value is too small, the current flowing when the output is LOW will be large (similar to a heavy load), which will increase power consumption and lead to an increase in VOL . Conversely, if the value is too large, it will be affected by the capacitance of the wiring and pins, causing the rise time from LOW to HIGH to be slow, resulting in a decrease in communication speed. 3.2.2 Conversion using standard logic (general-purpose logic) chips For simple voltage level conversion, you can also use standard logic. For example, Nexperia's 74AVCH4T245 is a general-purpose CMOS logic chip that can perform 4-bit bidirectional level conversion. This chip can convert signals from 0.8V to 3.6V, and the signal direction can be switched using the DIR pin. The signal speed depends on the voltage being converted, but it can support speeds of approximately 100M to 380Mbps. Figure 12: Example of standard logic - 74AVCH4T245 This chip enables high-speed bidirectional voltage conversion of signals, but the direction must be controlled by an external signal. While such control is possible with signals like READ/WRITE on a parallel bus, it is difficult to apply to communications like serial buses where the communication direction switches depending on the protocol. Figure 13: Example of standard logic. The signal direction must be specified externally. 4. Conversion of bidirectional signals requiring automatic direction switching. The "open-drain output" and "voltage conversion methods using standard logic chips" introduced so far mainly perform conversion in only one direction, or require switching of direction by an external signal. Communication methods like I²C and I3C , where the direction of the signal changes dynamically, require " bidirectional voltage level conversion " that automatically detects and switches the direction. Controlling the direction of such signals externally is difficult, and it is challenging to implement this with the buffer chips mentioned above. Furthermore, since I²C is an open-drain signal, it is not possible to connect standard open-drain logic buffers in opposite directions. Figure 14 shows an example of this, where open-drain buffers are connected in opposite directions. There is no problem when both sides of the buffer are HIGH, but once one of them goes LOW, the buffers will keep pulling the other input LOW and will not be able to return to HIGH. Figure 14: A typical open-drain buffer cannot automatically switch between bidirectional communication.   4.1 Bidirectional conversion using a single MOS transistor   Until now, simple circuits have sometimes been used for I²C signal-to-voltage conversion. We will present the simplest method, using a MOS transistor, as an example. Figure 15: Example of conversion using a MOS transistor   Figure 15 is taken from the I²C specification version 2.1 (2000) and shows an example where two MOS transistors (TR1, TR2) are used to convert 3.3V and 5V signals, respectively. Although such a simple conversion example using only transistors has been removed from the current I²C specification due to the problems described later, it is included here to understand the principle . The I²C signal lines, called SDA and SCL, are both open-drain bidirectional signals. Pull-up resistors are connected to the 3.3V and 5V sides, respectively. In this circuit, when the 3.3V and 5V signals are HIGH, the gate (g) and source (s) of this transistor are at the same potential, so the source (s) and drain (d) are OFF, and the connection between them is broken. When 3.3V changes to LOW in this state, the 3.3V side transistor (between s and d) turns ON , and the 5V side signal also goes LOW . When the 3.3V side changes to HIGH and the 5V side changes to LOW , the parasitic diode (body diode) connecting the 3.3V side to the 5V side first turns ON . When the diode turns ON, the source(s) voltage drops . As a result, the transistor turns ON , and the signal on the 3.3V side also becomes LOW . While this very simple mechanism using a transistor as a switch allows for voltage level conversion, there are problems. Transistor variations affect the threshold voltage for signal conversion. Furthermore, with the increasing need to handle lower signal voltages, for example, at signal voltages of around 1V, such a circuit cannot operate because it cannot obtain a sufficient gate-to-source voltage (Vgs). Addendum: The same circuit as in Figure 15 is still publicly available as application note AN10441 "Level shifting techniques in I²C-bus design" from Nexperia , a company formed when the semiconductor discrete/logic products business was spun off from NXP. The application note was first published in 2007 (Rev.01) separately from the I²C specification, and was revised under the Nexperia brand in 2020 (Rev.2). 4.2 Bidirectional conversion using dedicated equipment   By using a dedicated voltage level translator IC , voltage level conversion for bidirectional communication buses such as I²C and I3C can be easily performed. 4.2.1 I²C signal voltage conversion chip The PCA9306 and NVT20xx series ( NVT2001/02 , NVT2003/06 , NVT2008/10 ) are voltage level translators specifically designed for bidirectional signal conversion. These chips can handle multiple signal lines (multi-bit signal lines) simultaneously. While they are designated as I²C signal voltage conversion chips, they can also be used for other purposes (such as SPI and other push-pull signals) if the signal specifications match . The PCA9306 and NVT20xx series share the same internal structure, and the pull-up resistor only needs to be connected to the higher voltage side if the voltage difference to be converted is 1V or more . Figure 16 shows its internal structure and connection to external chips (excerpted from Fig. 2 of Application Note AN11127 : "Bidirectional voltage level translators NVT20xx and PCA9306" ). This chip contains the number of signal lines (bits) + 1 MOS transistors. Each transistor has a structure in which the source and drain are interchangeable. The transistors in the signal transmission path are called pass transistors , and the remaining one is called a reference transistor . Figure 16: NVT20xx (PCA9306) - Diagram illustrating chip operation.   Looking at the circuit, the gate and drain of the reference transistor are shorted and connected to the higher voltage power supply via a 200kΩ resistor. The remaining terminal of the reference transistor, the source, is connected to the lower voltage power supply. With this connection, the reference transistor acts as a single diode , and its gate voltage is one diode higher than the lower voltage power supply . The remaining pass transistor has its drain connected to the high-voltage signal line and a 1kΩ pull-up resistor, its source connected to the low-voltage signal line, and its gate connected to the gate of the reference transistor. When both the high and low signals of the pass transistor are HIGH, the high-voltage side becomes the voltage pulled up by the 1kΩ resistor . A pass transistor forms a circuit known as a "source follower." The terminal on the lower voltage side (source terminal) has a voltage that is lower than the voltage applied to the gate by the amount of Vgs required to turn the transistor ON . In other words, it has the same voltage as the low-voltage power supply. The transistor is in a semi-ON state (operating in the linear region), neither ON nor OFF. In this state, when either the high or low signal becomes LOW , the voltage difference between the gate and the signal terminal causes the transistor to turn ON (operating in the saturation region where it is fully ON), and the other terminal also becomes LOW . The signal speed that this series can handle is affected by the pull-up resistor and the capacitance of the signal line. The datasheet states that the PCA9306 can handle up to 2MHz. The NVT20xx series can handle signal speeds up to 33MHz with a 192Ω pull-up resistor and a capacitance of 50pF. For signals around 1MHz, it will work without problems even if you don't worry too much about the pull-up resistor and capacitance (assuming it's within the range typically used for I²C). However, when using this chip to handle higher-speed signals in a push-pull configuration, a thorough understanding of its characteristics and careful component selection are necessary. Details of the operation of this type of voltage level translator are described in the article " The Internals and Operation of the PCA9306 ". 4.2.2 High-speed bidirectional open-drain signal-to-voltage conversion chip We introduce the NTS030x series ( NTS0302JK , NTS0304E ) as high-speed bidirectional open-drain signal conversion chips. This chip can perform 2-bit or 4-bit bidirectional signal conversion and can handle signals up to 2Mbps (1MHz) for open-drain signals and 20Mbps (10MHz) for push-pull signals.   Figure 17: NTS030x - Internal Chip Block Diagram   Figure 17 shows the internal structure of one signal bit in the NTS030x. In the diagram, transistor T3 is a pass-through transistor , and a gate terminal bias voltage is applied to it, so it turns ON when either the signal labeled A or B goes LOW. When both A and B are HIGH, T3 turns OFF, and since A and B are connected to their respective power supplies with relatively large pull-up resistors (10kΩ), they will have their respective voltages. This chip has T3, as well as T1 and T2 . These T1 and T2 are used for a function called " edge rate accelerator ." We will focus on one of them, T1, and explain its operation. T1 is placed on the A side, with its source terminal connected to the A signal and its drain terminal connected to the A side power supply. The gate terminal is connected to the block labeled "ONE-SHOT AND SLEW RATE CONTROL" that controls it. The "ONE-SHOT AND SLEW RATE CONTROL" block is connected to the B signal on the opposite side and detects the change from LOW to HIGH in the B signal . When this is detected, T1 is temporarily turned ON, bypassing the 10kΩ pull-up resistor and allowing current to flow, thereby accelerating the change from LOW to HIGH in the A signal . By speeding up the rise time of the signal in this way, it becomes possible to handle faster signals. Incidentally, the slew rate when T1 is turned ON is controlled, taking into consideration the suppression of ringing caused by a sudden increase in current. The other T2 uses the same mechanism but in the reverse direction, and is applied to the B-side signal as well. The NTS series has another user-friendly feature . In the case of the MOS transistors and PCA9306/NVT20xx described so far, there was a problem in that if one power supply was turned off, the signal of the other would be set to LOW. To solve this problem, the NTS030x operates so that when both power supplies are not ON, the signal pins are set to a high impedance state to prevent them from affecting each other . By using this function, it becomes possible to partially control the ON/OFF state of the system's power supply . The NTS010x series ( NTS0102 , NTS0104 ) is equivalent to the NTS030x series, but lacks slew rate control functionality to handle higher-speed signals. An evaluation board, NTS0304EUK-ARD, is available for the NTS0304E to allow for quick and simple operational verification. For an overview of the NTS0304EUK-ARD board and how to operate it, please refer to this video , "How to operate the NTS0304EUK-ARD" . 4.2.3 Bidirectional push-pull signal-to-voltage converter chip Furthermore, for use with push-pull signals only, there is the NTB010x series ( NTB0102 , NTB0104 ), which offers a faster option. When stable in a HIGH or LOW state, the signal is driven through a 4kΩ resistor. Similar to the NTS030x series, it has a one-shot function on both the HIGH and LOW sides, and has a mechanism that uses this to change the signal on the opposite side when there is a change in the signal at either terminal. This mechanism enables signal-to-voltage conversion at speeds of 70-80 Mbps while also having an automatic signal direction detection function.   Figure 17: NTB010x - Internal Chip Block Diagram 4.2.4 I3C signal voltage converter chip I3C has a specification that switches between open-drain and push-pull communication modes . In open-drain mode, it is compatible with I²C and operates at frequencies up to 4MHz . In push-pull mode, a 12.5MHz clock is used. Since the signal voltage is usually in the range of 1V to 3.3V, a voltage level translator that operates according to the signal specifications is required when there is a voltage difference. Figure 18 shows the internal block diagram of one bit of the P3A1604 . As shown in the figure, this chip incorporates a mechanism to accelerate not only the LOW→HIGH change but also the HIGH→LOW change, as well as a pull-up resistor that can be switched ON/OFF.   Figure 18: P3A1604 - Chip internal block diagram The P3A1604 is a 4-bit I3C voltage level translator. A 2-bit version, the P3A9606 , is also available.   4.2.5 Buffer-based conversion Another method for converting bidirectional signals is to use a dedicated buffer. The primary purpose of a buffer is to enhance driving capability and separate the capacitance of connected signal lines, but there are also products that support voltage conversion. As explained in this blog, simple buffers cannot mutually buffer bidirectional open-drain signals. Therefore, various buffer products with special features for bidirectional open-drain signals are available. I will explain more about buffers on a later occasion. 5. Summary Voltage level translators are essential components for safely and reliably exchanging signals between digital circuits with different power supply voltages. Understanding the definitions of logic levels such as TTL, LVTTL, and CMOS, as well as the relationships between VOH/VOL/VIH/VIL, allows you to select the appropriate connection and conversion method. For unidirectional conversion, open-drain outputs or standard logic ICs can be used, while for bidirectional conversion, MOS transistors or dedicated ICs (such as the PCA9306/NVT/NTS/NTB/P3A series) can be used. Voltage level translators with automatic signal direction detection capabilities are particularly useful for buses requiring bidirectional communication, such as I²C and I3C. Furthermore, recent advancements in semiconductor technology have led to lower voltages and higher speeds, requiring more precise voltage level control. While there are many methods and options for voltage level conversion, it is important to select the optimal method and components according to the application, taking into account signal specifications, speed, and system power management. 5.1 Comparison of methods/part numbers introduced in the blog Method/Part Number Purpose Number of bits Direction change Open wiring compatible Low voltage side [V] High voltage side [V] Bitrate [bps] Conversion with open-drain output General purpose 1 unidirectional - - - - Standard logic (e.g., 74AVCH4T245) General purpose (parallel bus, etc.) 4 + 4 External control Not supported 0.8 ~ 3.6 0.8 ~ 3.6 100M ~ 380M Bidirectional conversion using a single MOS transistor I²C, General Purpose 1 automatic correspondence Depending on the transistor specifications ~ 1M PCA9306 I²C, General Purpose 2 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz, depending on conditions) NVT2001 I²C, General Purpose 1 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NVT2002 I²C, General Purpose 2 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NVT2003 I²C, General Purpose 3 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NVT2006 I²C, General Purpose 6 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NVT2008 I²C, General Purpose 8 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NVT2010 I²C, General Purpose 10 automatic correspondence 1.0 ~ 3.6 1.8 ~ 5.5 4M (2MHz @ open drain), 66M (33MHz @ optimized conditions) NTS0302JK I²C, SPI, General Purpose 2 automatic correspondence 0.95 ~ 3.6 1.65 ~ 5.5 2M @ Open Drain, 20M @ Push Pull NTS0304E I²C, SPI, General Purpose 4 automatic correspondence 0.95 ~ 3.6 1.65 ~ 5.5 2M @ Open Drain, 20M @ Push Pull NTS0102 I²C, SPI, General Purpose 2 automatic correspondence 1.65 ~ 3.6 2.3 ~ 5.5 50M @ Push-Pull NTS0104 I²C, SPI, General Purpose 4 automatic correspondence 1.65 ~ 3.6 2.3 ~ 5.5 50M @ Push-Pull NTB0102 SPI, General Purpose 2 automatic Not supported 1.2 ~ 3.6 1.65 ~ 5.5 70M ~ 80M NTB0104 SPI, General Purpose 4 automatic Not supported 1.2 ~ 3.6 1.65 ~ 5.5 70M ~ 80M P3A9606 I3C, I²C, SPI, General Purpose 2 automatic correspondence 0.72 ~ 1.98 0.72 ~ 1.98 (12.5MHz) P3A1604 I3C, I²C, SPI, General Purpose 4 automatic correspondence 0.72 ~ 1.98 1.62 ~ 3.63 6.8M @ Open Drain, 40M @ Push Pull Table 1: Comparison of methods/part numbers introduced in the blog   6. Reference materials Product introduction page: Voltage Level Converter NXP System Management I2C, I3C, SPI Selector Guide I2C Bus Specifications and User Manual (Rev5.0) (Japanese version) I2C Bus Specifications and User Manual (Rev7.0) English version) NXP Community Blog: I3C Bus Overview – The Next Serial Bus Japanese Webinar Video: "The Basics of the Next-Generation Interface 'I3C' That You Need to Know Now" Qiita @teddokano: PCA9306's internals and operation Change history: 2025-08-28: First Edition 2025-08-28: Added information about NTS0304EUK-ARD and a link to the blog with the video. 2026-04-10: Correction of low voltage side [V] and high voltage side [V] in Table 1. 2026-06-20: Section 3.1 "Column: VIH (min) of TTL" Added "How are VIL(max) = 2.0V and VIL(max) = 0.8V determined?". Added internal circuit example of standard TTL logic IC: SN7400 (2-input NAND) and output waveform of SN7420. 2026-07-10: Added to Section 4.1 that the circuit in Figure 15 is also published as Nexperia application note AN10441. ========================= We are currently unable to respond to comments left in the "Comment" section of this post. We apologize for the inconvenience, but please refer to " Technical Questions to NXP - How to Contact Us( Japanese Blog) " when making an inquiry. (If you are already an NXP distributor or have a relationship with NXP, you may ask your representative directly.) This blog explains the differences in voltage levels between various types of logic circuits used in digital circuits (*TTL, *LVTTL, *CMOS), and the important meanings of VOH , VOL , VIH , and VIL for identifying them. Furthermore, we will explain which voltage level translator to choose from among the various conversion methods. We will take a closer look at the conversion of bidirectional open-drain signals , which requires special handling. Interface Introduction Japanese Blog
View full article
i.MX95 ISP Camera Compatibility Guide The purpose of this page is to provide supportive information for the selection of suitable camera modules that are supported by the i.MX95. The guide is attached in this page. This helps customers evaluate project feasibility and integration aspects when considering i.MX 95 SoCs for their products. It is strongly recommended to consult with NXP and the camera module vendor before finalizing the choice of the camera part number to ensure compatibility, availability, longevity, and pricing requirements. NXP Supported Sensors: Sensor Vendor Image Sensor Max Resolution Camera Module OmniVision OS08A20 8MP IMX95-OS08A20 | NXP Semiconductors EXPI-OS08A20 OmniVision OX05B1S 5MP OmniVision OX03C10 3MP Onsemi AR0144 1MP AR0144   Partner Enabled Sensors: Partner Sensor Vendor Image Sensor Max Resolution ISP Tuning Camera Module Location FRAMOS Sony IMX662 2MP ✔ FSM:GO Munich, Germany/ Canada/USA Sony IMX678 8MP Sony IMX900 3.2MP Sony IMX676 12MP Onsemi Onsemi AR2020 19MP Module available through Future Electronics Entron OmniVision OS08A20 8MP ✔ EXPI-OS08A20 China Onsemi AR0820 8MP Order with Entron Onsemi AR0823 8MP Technexion Onsemi AR0144 1MP Onsemi AR0145 1MP Onsemi AR0234 2MP Onsemi AR0235 2MP Onsemi AR0236 2MP Onsemi AR0521 5MP Onsemi AR0522 5MP Onsemi AR0544 5MP Onsemi AR0821 8MP   Onsemi AR0822 8MP Onsemi AR0830 8MP Onsemi AR1335 13MP PHYTEC Onsemi AR0144 1MP Germany/ China/India/ USA Onsemi AR0234 2.3MP Onsemi AR0521 5MP E-consystems Sony IMX662 2.4MP Riverside, CA, USA/India Sony IMX900 3.2MP IMX95EVK
View full article
PN7161 同时移除标签时的 NFC 发现阻塞问题 我正在使用 PN7161 芯片识别 NFC 卡。 当我同时标记 MIFARE Classic 卡和智能手机的 NFC 时,然后同时移除它们,函数NxpNci_WaitForDiscoveryNotification 就会被阻止。 打印 " WAITING FOR 设备 DISCOVERY " 后,程序无法继续打印 " test_1 "。 我使用的是 SW6705。 /////////////////////////////////////////////////////////////// /* 开始探索 */ 如果(::NxpNci_StartDiscovery(RW_DiscoveryTechnologies, sizeof(RW_DiscoveryTechnologies)) != NFC_SUCCESS) { LOG_ERR("无法开始发现"); 返回; } 虽然(_nfcRfMode == NFC_RF_MODE_RW) { LOG_INF( " 等待设备发现 "); /* 等待,直到发现对等设备 */ 而(::NxpNci_WaitForDiscoveryNotification(&RfInterface) != NFC_SUCCESS) { 日志文件("test_1"); 如果(_nfcRfMode != NFC_RF_MODE_RW) { ::NxpNci_StopDiscovery(); 日志文件("模式已更改,退出 RW 模式"); 返回; } } 如果((RfInterface.ModeTech & MODE_MASK) == MODE_POLL) { ////////////////////////////////////////////////////////////////////////////// 以下是出现问题时显示的 NCI 信息。之后,即使将卡靠近,也无法识别。只有在关闭电源并重新打开后,才能再次识别该卡。 [00:03:24.623,321] Iso14443_4Handler: === ISO14443-4 Scenario Complete === NCI>> 2f 11 00 NCI<< 4f 11 01 00 [00:03:25.265,533] NfcManager:CARD REMOVED NCI>> 21 06 01 00 NCI<< 6f 11 01 00 NCI<< 41 06 01 00 NCI>> 21 03 07 03 00 01 01 06 01 NCI<< 61 06 02 00 00 NCI>> 21 03 07 03 00 01 01 06 01 NCI<< 41 03 01 00 [00:03:25.288,543] nfcManager:等待设备发现 NCI < < 41 03 01 a0 NCI < < 60 07 01 a1 a1 NCI < > 21 06 01 03 NCI < < 41 06 01 00 NCI < < 61 06 02 03 00 NC I < < 61 03 0f 01 80 00 0a 04 00 04 aa 4e 46 0e 0e 01 08 00 02 NC I < < 61 03 0f 02 00 04 00 04 08 c0 b9 fa 01 20 00 02 02 02 02 04 00 04 04 08 c0 fa 01 20 00 01 //////////////////////////////////////////////////////////////////////////// 是否有人遇到过这个问题,或者是否有建议的方法来处理同时删除标签的问题,以避免在发现通知功能中阻塞? Re: PN7161 NFC Discovery Blocking Issue with Simultaneous Tag Removal 你好@Jaden_jung 希望你一切顺利。 能否请您提供有关设置的更多详细信息?您使用的主机平台是什么?你使用的智能手机是iOS设备,还是安卓设备? 我使用 SW6705 Rev 1.2(使用未修改的 LPC55S6x RW 演示)、OM27160、LPCXpresso55S69 并同时移除 Pixel 3 和 MIFARE Classic,都无法重现这种行为。您能否使用 PN7160 开发套件 (OM27160) 重现这种行为? Eduardo。 Re: PN7161 NFC Discovery Blocking Issue with Simultaneous Tag Removal 照片显示了症状再现时的电流值。据怀疑,即使在取出卡之后,系统仍无法恢复到轮询状态。 Re: PN7161 NFC Discovery Blocking Issue with Simultaneous Tag Removal 主机是 nrf52840,手机是安卓手机。(Samsung Galaxy s25 和 flip) 同时访问两张 MIFARE 经典卡时没有问题。 将 OM27160 板与树莓派搭配使用(使用 linux_libnfc-nci)时没有问题。 定义 REMOVE_P2P_SUPPORT 可以解决问题。 出现问题时,它是否按照下面的流程工作? 0. at 946line if (Answer[1] == 0x05) // true { pRfIntf->Interface = Answer[4]; // = 0x02 = INTF_ISODEP pRfIntf->Protocol = Answer[5]; // = 0x04 = PROT_ISODEP ...... NCI<< 61 05 19 01 02 04 01 ff 01 0c 0b 64 c6 b2 a3 00 00 00 80 81 71 01 00 00 02 01 00 1.在 WaitForDiscoveryNotification 处分支(第 962-963 行): 在未定义 REMOVE_P2P_SUPPORT 时执行分支。 NCI>> 21 06 01 03 (NxpNci_HostTransceive) NCI<< 41 06 01 00 (NxpNci_WaitForReception) 2.从 do-while 循环退出: 收到以下通知后,循环终止(第 966 行): NCI<< 61 06 02 03 00(成功退出循环) 3.多张卡片检测(找到 2 张卡片): 该设备可识别野外两个目标: 目标 1:61 03 0f 01 80 00 0a 04 00 04 aa 4e 46 0e 0e 01 08 00 02 目标 2:61 03 0f 02 04 00 0a 04 00 04 04 08 c0 b9 fa 01 20 00 02 02 02 04 04 08 c0 b9 fa 01 20 00 01 4.处理条件分支:(第 986 行) 由于接收到的响应与条件不符(Answer[0] == 0x61&& Answer[1] == 0x05),逻辑会跳转到 if (AnswerSize != 0) 块。 5.第 989 行的潜在阻塞: 在第 989 行,条件 while(Answer != 0) 似乎总是为真,导致潜在的无限循环或阻塞状态。这似乎是启用 P2P 支持时系统挂起的根本原因。
View full article
RT685: SDK 25.12 に HASHCRYPT アクセラレーションがない こんにちは、 最近、SDK 25.12 にアップデートしたところ、TLS 復号化率が半分に低下していることに気付きました。 mbedTLS v3.x は、 fsl_hashcryptハードウェア機能を使用して高速化されなくなりました。 以下は、以前の SDK 25.09 を使用してmbedtls_ssl_readを呼び出すコールスタックです。ご覧のとおり、最終的にはHASHCRYPT_AES_EncryptEcbが使用されます。 hashcrypt_aes_one_block_aligned() at fsl_hashcrypt.c:437 hashcrypt_aes_one_block() at fsl_hashcrypt.c:581 HASHCRYPT_AES_EncryptEcb() at fsl_hashcrypt.c:1,284 mbedtls_internal_aes_encrypt() at aes_alt.c:1,959 mbedtls_aes_crypt_ecb() at aes_alt.c:1,323 aes_crypt_ecb_wrap() at cipher_wrap.c:114 mbedtls_cipher_update() at cipher.c:521 mbedtls_gcm_update() at gcm.c:358 mbedtls_gcm_crypt_and_tag() at gcm.c:456 mbedtls_gcm_auth_decrypt() at gcm.c:491 mbedtls_cipher_aead_decrypt() at cipher.c:1,407 mbedtls_cipher_auth_decrypt_ext() at cipher.c:1,613 mbedtls_ssl_decrypt_buf() at ssl_msg.c:1,242 ssl_prepare_record_content() at ssl_msg.c:3,667 ssl_get_next_record() at ssl_msg.c:4,551 mbedtls_ssl_read_record() at ssl_msg.c:3,817 mbedtls_ssl_read() at ssl_msg.c:5,237 <...more frames...> MBEDTLS_USE_PSA_CRYPTOが定義された SDK 25.12 のコールスタックを以下に示します。このバージョンでは、 mbedtls_internal_aes_encryptはすべて C コードで、ハードウェアアクセラレーションは使用されていません。 mbedtls_internal_aes_encrypt() at aes.c:894 mbedtls_aes_crypt_ecb() at aes.c:1,062 aes_crypt_ecb_wrap() at cipher_wrap.c:166 mbedtls_cipher_update() at cipher.c:611 gcm_mask() at gcm.c:546 mbedtls_gcm_update() at gcm.c:641 mbedtls_gcm_crypt_and_tag() at gcm.c:726 mbedtls_gcm_auth_decrypt() at gcm.c:753 mbedtls_psa_aead_decrypt() at psa_crypto_aead.c:270 psa_driver_wrapper_aead_decrypt() at psa_crypto_driver_wrappers.h:4,114 psa_aead_decrypt() at psa_crypto.c:5,023 mbedtls_ssl_decrypt_buf() at ssl_msg.c:1,625 ssl_prepare_record_content() at ssl_msg.c:4,093 ssl_get_next_record() at ssl_msg.c:5,068 mbedtls_ssl_read_record() at ssl_msg.c:4,323 mbedtls_ssl_read() at ssl_msg.c:5,983 <...more frames...> 以下は、 MBEDTLS_USE_PSA_CRYPTOが定義されていない SDK 25.12 のコールスタックです。このバージョンでは、 mbedtls_internal_aes_encryptはすべて C コードであり、HW アクセラレーションはなく、PSA は使用されません。 mbedtls_internal_aes_encrypt() at aes.c:899 mbedtls_aes_crypt_ecb() at aes.c:1,062 aes_crypt_ecb_wrap() at cipher_wrap.c:166 mbedtls_cipher_update() at cipher.c:611 gcm_mask() at gcm.c:546 mbedtls_gcm_update() at gcm.c:628 mbedtls_gcm_crypt_and_tag() at gcm.c:726 mbedtls_gcm_auth_decrypt() at gcm.c:753 mbedtls_cipher_aead_decrypt() at cipher.c:1,528 mbedtls_cipher_auth_decrypt_ext() at cipher.c:1,674 mbedtls_ssl_decrypt_buf() at ssl_msg.c:1,639 ssl_prepare_record_content() at ssl_msg.c:4,093 ssl_get_next_record() at ssl_msg.c:5,068 mbedtls_ssl_read_record() at ssl_msg.c:4,323 mbedtls_ssl_read() at ssl_msg.c:5,983 <...more frames...> RT685 HASHCRYPT ハードウェア アクセラレーションを mbedTLS に復元する予定はありますか?特定の PSA Crypto ドライバーが実装されていないようです。 よろしくお願いします。 Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは、エドウィン。 移行ガイドを確認しました。ただし、このバージョンの SDK では、PSA なしの mbedTLS 2.x または mbedTLS 3.x がどのようにハードウェア アクセラレーションされるかはわかりません。aes_alt.c が削除され、HASHCRYPT 機能は PSA ドライバでのみサポートされるようになりました。 SDK 25.12 ではアプリですべてが動作し、接続には間違いなく TLS 1.3 を使用したいと考えていますが、現状ではパフォーマンスが大幅に低下します。 これについては引き続き調査していきます。例の 1 つを変更して、パフォーマンスの低下を再現できるかどうかを確認します。 よろしくお願いいたします。 アミルカル Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは、エドウィン。 EVKで問題を再現しました。2つのサンプルに、200回の反復処理のループを追加して修正しました。 mbedtls_gcm_self_test RTC クロックを使用して全体の実行時間を計測しました。 evkmimxrt685_mbedtls_selftest_cm33 SDK 25.09からテストを実行しました 1087ミリ秒 このコールスタックでは: HASHCRYPT_AES_EncryptEcb() at fsl_hashcrypt.c:1,260 mbedtls_internal_aes_encrypt() at aes_alt.c:1,959 mbedtls_aes_crypt_ecb() at aes_alt.c:1,323 aes_crypt_ecb_wrap() at cipher_wrap.c:114 mbedtls_cipher_update() at cipher.c:521 mbedtls_gcm_starts() at gcm.c:294 mbedtls_gcm_crypt_and_tag() at gcm.c:452 mbedtls_gcm_self_test() at gcm.c:826 evkmimxrt685_mbedtls3x_psatest_cm33 SDK 25.12からテストを実行しました 8990ミリ秒 このコールスタックでは: mbedtls_internal_aes_encrypt() at aes.c:896 mbedtls_aes_crypt_ecb() at aes.c:1,062 aes_crypt_ecb_wrap() at cipher_wrap.c:166 mbedtls_cipher_update() at cipher.c:611 mbedtls_gcm_starts() at gcm.c:441 mbedtls_gcm_crypt_and_tag() at gcm.c:718 mbedtls_gcm_self_test() at gcm.c:1,075   evkmimxrt685_mbedtls3x_psatest_cm33 SDK 25.12以降 MBEDTLS_PSA_ACCEL_KEY_TYPE_AES 定義されたテストを実行した 8744ミリ秒 このコールスタックでは: HASHCRYPT_AES_EncryptEcb() at fsl_hashcrypt.c:1,255 hashcrypt_cipher_encrypt() at mcux_psa_hashcrypt_common_cipher.c:187 psa_driver_wrapper_cipher_encrypt() at psa_crypto_driver_wrappers.h:2,353 psa_cipher_encrypt() at psa_crypto.c:4,766 mbedtls_block_cipher_encrypt() at block_cipher.c:177 mbedtls_gcm_starts() at gcm.c:439 mbedtls_gcm_crypt_and_tag() at gcm.c:718 mbedtls_gcm_self_test() at gcm.c:1,075 例の変更点の要点は次のとおりです。 BOARD_InitHardware(); test_rtc_init(); psa_crypto_init(); uint64_t ms_start = test_rtc_get_msecs(); for (int i = 0; i < 200; ++i) { PRINTF("test iteration %d\r\n", i+1); mbedtls_gcm_self_test(0); } uint64_t ms_end = test_rtc_get_msecs(); PRINTF("test time = %ums\r\n", (unsigned)(ms_end - ms_start)); ...ここで、 test_rtc_get_msecs は、1 秒未満の精度を使用して現在の RTC 時刻を返します。 ご覧のとおり、新しい SDK で GCM/AES を暗号化すると、速度が約 8 倍低下します。 ご希望であれば、修正したサンプルを添付することもできます。 よろしくお願いいたします。 アミルカル Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは@hrc-amilcar 、 この質問にご辛抱いただきありがとうございます。社内チームからの返答を受け取りましたので、以下をご覧ください。 コールスタックから、従来の mbedtls_xxx 暗号 API を使用していることがわかります。実際、HW アクセラレーションではありません。mbedTLS3.xCrypto 用の新しい API が導入されました。これは PSA です。mbedtls/docs/psa-transition.md は v3.6.5 · Mbed-TLS/mbedtls · GitHub で高速化されています。レガシー暗号 API は MbedTLS4.x でさらに削除されます。 RT600 用の SDK で psa_crypto_examples を確認したところ、 PSA_CRYPTO_DRIVER_HASHCRYPT が定義されているため、暗号ドライバー ラッパーが暗号計算を HW にオフロードできるようになり、HASHCRYPT HW アクセラレーションがデフォルトで有効になっています。一方、MbedTLS3.x+ はより複雑で、PSA API 仕様に準拠しているため、一部のユースケースでは実際にパフォーマンスが低下する可能性があります。TLS の場合、この IP は bignum アクセラレーションのみをサポートし、HW IP がアルゴリズム全体を実装することを期待する PSA API との互換性があまりないため、むしろ非対称暗号化 (CASPER HW IP) がパフォーマンスのボトルネックになると予想されます。少なくとも一部の ECC 操作 (署名、検証) を高速化するために最善を尽くしましたが、ECDHE キー交換中の keygen などの他の操作では速度が低下する可能性があります。 ここで、パフォーマンス測定に PSA API を使用して、PSA_CRYPTO_DRIVER_HASHCRYPT が定義され、コール スタックがそれを使用していることを確認できるとよいでしょう。参考までに: Hashcrypt は AES-GCM アクセラレーションをネイティブに提供していないため、HW IP の実際のメリットを確認するには、AES-CBC または AES-CTR をベンチマークすることをお勧めします。 BR、 エドウィン。 Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは@hrc-amilcar 、 mbedTLS 2.x (PSA なし) から mbedTLS 3.x (PSA あり) に移行すると、次の理由によりパフォーマンスが低下する可能性があります。 PSAドライバインターフェースはまだ部分的にしか実装されていません。そのため、ドライバ作成に必要な成果物や、ドライバをMbed TLSに統合する方法は、高速化対象となる操作によって異なります。( https://mcuxpresso.nxp.com/mcuxsdk/latest/html/middleware/mbedtls3x/docs/psa-driver-example-and-guide.html) 現時点では、2.xから3.xへの適切な移行方法に関するガイドラインに従うことをお勧めしています: Mbed TLS 2.xからMbed TLS 3.0への移行 — MCUXpresso SDKドキュメント PSA APIへの適切な移行ガイド: PSA APIへの移行 - MCUXpresso SDKドキュメント ご不便をおかけして申し訳ございません。 BR、 エドウィン。 Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは@hrc-amilcar 、 SDK をアップデートした後に何か変更を加えましたか?SDK のサンプルコードでも同様の現象が見られますか?スタンドアロン IDE を使用していますか、それとも VS Code 拡張機能を使用していますか? BR、 エドウィン。 Re: RT685: SDK 25.12 no HASHCRYPT acceleration mbedTLS設定ファイルに MBEDTLS_PSA_ACCEL_KEY_TYPE_AES を 定義したのです が、HASHCRYPTまで呼び出されるようになりました。しかし、mbedtls_ssl_readの読み取り速度がさらに遅くなっています。他に定義が不足しているのか、PSAレイヤーが余分なオーバーヘッドを加えているのか、疑問に思っています。   TLS ソケット経由で WiFi から 4KB パケットをダウンロードする速度: SDK 25.09: 205KB/秒 (PSAなし、ksdkポートファイルありのmbedTLS 2.x) SDK 25.12: 138KB/秒 (MBEDTLS_PSA_ACCEL_KEY_TYPE_AES なし) SDK 25.12: 125KB/秒 (MBEDTLS_PSA_ACCEL_KEY_TYPE_AES 使用時) MBEDTLS_PSA_ACCEL_KEY_TYPE_AES を使用した新しいコールスタックは次のとおりです。 HASHCRYPT_AES_EncryptEcb() at fsl_hashcrypt.c:1,255 hashcrypt_cipher_encrypt() at mcux_psa_hashcrypt_common_cipher.c:203 psa_driver_wrapper_cipher_encrypt() at psa_crypto_driver_wrappers.h:2,353 psa_cipher_encrypt() at psa_crypto.c:4,766 mbedtls_block_cipher_encrypt() at block_cipher.c:177 gcm_mask() at gcm.c:543 mbedtls_gcm_update() at gcm.c:628 mbedtls_gcm_crypt_and_tag() at gcm.c:726 mbedtls_gcm_auth_decrypt() at gcm.c:753 mbedtls_psa_aead_decrypt() at psa_crypto_aead.c:270 psa_driver_wrapper_aead_decrypt() at psa_crypto_driver_wrappers.h:4,114 psa_aead_decrypt() at psa_crypto.c:5,023 mbedtls_ssl_decrypt_buf() at ssl_msg.c:1,625 ssl_prepare_record_content() at ssl_msg.c:4,093 ssl_get_next_record() at ssl_msg.c:5,068 mbedtls_ssl_read_record() at ssl_msg.c:4,323 mbedtls_ssl_read() at ssl_msg.c:5,983 <...more frames...> Re: RT685: SDK 25.12 no HASHCRYPT acceleration こんにちは@EdwinHz 、 MCUXpresso IDEを使用しています。 SDK を更新した後、追加の変更はありません。 SDK を更新するときは、「SDK マネジメント」→「SDK コンポーネントの更新」を再実行して、新しい更新されたファイルを取得します。 次に.cprojectを比較します同様の機能が有効になっているサンプルの1つに構成を変更します(例:evkmimxrt685_wifi_wpa_supplicant_cm33) PSA_CRYPTO_DRIVER_CASPER=1 PSA_CRYPTO_DRIVER_HASHCRYPT=1 CONFIG_WPA_SUPP_CRYPTO_MBEDTLS_PSA=1 等... メインの mbedTLS 構成ヘッダーとしてデフォルトのmcux_mbedtls_config.h を使用し、 evkmimxrt685_wifi_wpa_supplicant_cm33の例のwpa_supp_mbedtls_config.hとほぼ同じ独自のユーザー構成ファイルを使用しています。 mbedtls3x_examples を試して、どのように動作するか確認します。おそらく、いくつかの定義が欠落しているのでしょう。 コードをステップ実行しているときに、 gcm 操作を高速化するために、おそらくMBEDTLS_BLOCK_CIPHER_C を定義する必要があることに気付きました。 ヘッダーmbedtls3x/include/mbedtls/config_adjust_legacy_crypto.hがこれに関係しているようですが、何らかの理由でそのマクロが定義されません。 Re: RT685: SDK 25.12 no HASHCRYPT acceleration 他人の利益のために... mbedTLS 3.xのmbedtls_xorは、一度に4バイトのデータをループして呼び出しているようです。 mbedtls_get_unaligned_uint32 そして mbedtls_put_unaligned_uint32 どちらも単一の uint32 に対して memcpy を使用します。 mbedTLS の作者たちは、一度に 4 バイトの XOR ブロックを計算する (剰余ループを使用) ことでパフォーマンスの向上を試みていることは承知していますが、memcpy の完全な呼び出しによって、実際にはコードの速度が低下しています。 逆アセンブリを調査した結果、プロジェクトが -fno-builtin でコンパイルされており、小さな memcpy がコンパイラによってインライン化されないことが判明しました。 このオプションを削除すると、AES-GCM 操作に使用されていない HASHCRYPT ハードウェアのパフォーマンス損失の多くが回復しました。SO、私が投稿した例では、実行時間が 8600 ミリ秒から 2100 ミリ秒に短縮されました。mbedTLS 2.x + ksdk alt (1087 ミリ秒) のレベルには達していません。しかし、復元されたパフォーマンスは十分良好です。 -アミルカル
View full article
RTD- Need support for using Wdg(watchdog )driver for saf9000 RTD driver version (R23-11 v1.0.0) We are from the Quantum rfp team, working for the SAF9000 chip. We are trying to use RTD's-Wdg (watchdog) driver and see some issues like wdg calls trying to suspend all interrupts and then resuming interrupts.This is affecting some of the features. So wanted some support to help identify root cause/proper usage of wdg and fix the issues we are facing. Could you please support. Current RTD Configuration we are trying to use are attached (wdg and platform xdm files): wdg- in enable direct service mode. using below calls:  For initialization:  Wdg_43_Instance0_Init((Wdg_ConfigType*)NULL_PTR); //since using post build variant   For toggle/feeding watchdog regularly we are using: Wdg_43_Instance0_SetMode(WDGIF_FAST_MODE); Let me know in direct service mode the calls to be used to initialize and feed watch dog are correct or not? Will any of these calls disturb any other interrupt, causing us other functionality issues? RTD Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 Thanks Cuong. To start with we started using indirect servicing, but since we were using GptChannelConfiguration_0 for some other timer purpose already, we could not use the same in wdg configuration for "Wdg External Trigger Counter  " . We tried defining  GptChannelConfiguration_1 in addition and tried to use it for "Wdg External Trigger Counter  " in wdg tresos configuration, but it was not allowing it for some reasons(was getting red cross mark). That is when we switched to direct mode. As per your suggestion i will try using   function Wdg_43_Instance0_Service function. If problem persists then i will again try to use indirect servicing, and for configuration problem, i will approach you. Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 Hi @renukasc  I see that you used SetMode to feeding watchdog is wrong. With direct service: use Wdg_43_Instance0_Service function With indirect service: use Wdg_43_Instance0_SetTriggerCondition function. Please check our example in Wdg module to refer how we use Wdg_43_Instance0_SetTriggerCondition  Path: \plugins\Wdg_TS_T40D34M50I0R0\examples Furthermore: Wdg_43_Instance0_Init((Wdg_ConfigType*)NULL_PTR) -> Using with Precompile, not Post-built Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 i could try using Wdg_43_Instance0_Service. Watchdog functionality fine as said before.If not fed , watchdog isr is triggering as expected.But problem is when watchdog apis are used,i could see it affecting all our other functinalities.Looks like it is affecting interrupts. Could you please provide one WDT example application, that has timer and other ISR like UART in which WDT is not affecting these ISRs using direct service mode .   Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 One more update, as indicated earlier when wachdog calls are used in our app, looks like other interrupts like timer(gpt) are not getting served, we dont get isrs triggering for this any more. Tried changing priority of the interrupts,not helping. Also tried commenting OsIf_SuspendAllInterrupts(), OsIf_ResumeAllInterrupts()  in /RTD/eclipse/plugins/Rte_TS_T40D94M10I0R0/src/SchM_Wdg.c . This is also not helping. Could you please provide one WDT example application, that has timer and other ISR like UART in which WDT is not affecting these ISRs using direct service mode.   Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 Below is the flow when WDG service is called:  Wdg_43_Instance0_Service()   → Wdg_ChannelService(WDG_IPW_INSTANCE0)       → Wdg_Ipw_Service(Instance)           → Swt_Ip_Service(Instance)               → SchM_Enter_Wdg_WDG_EXCLUSIVE_AREA_09();   // This can call OsIf_SuspendAllInterrupts()               → ...               → SchM_Exit_Wdg_WDG_EXCLUSIVE_AREA_09();    // This can call OsIf_ResumeAllInterrupts() So, If you call Wdg_43_Instance0_Service and in your RTE, the definition of SchM_Enter_Wdg_WDG_EXCLUSIVE_AREA_09 and SchM_Exit_Wdg_WDG_EXCLUSIVE_AREA_09 are call OsIf_SuspendAllInterrupts/OsIf_ResumeAllInterrupts then yes it could affect to interrupt. However, after call this function, the interrupt should be back to normal.  Do you mean that even exit this function Wdg_43_Instance0_Service, interrupts still cannot be triggered? Can you share me how do you implemented OsIf_SuspendAllInterrupts(), OsIf_ResumeAllInterrupts()  in your project?   Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 @renukasc  When "Development Error Detection" is enabled, Wdg APIs use Wdg_ChannelValidateGlobalCall and Wdg_ChannelEndValidateGlobalCall. These functions use SchM_Enter/Exit_Wdg_WDG_EXCLUSIVE_AREA_06 and SchM_Enter/Exit_Wdg_WDG_EXCLUSIVE_AREA_07. Please verify in your SchM implementation how SuspendAllInterrupts and ResumeAllInterrupts behave. In particular: after ResumeAllInterrupts is called, do all interrupts return to their normal state? Re: RTD- Need support for using Wdg(watchdog )driver for saf9000 what we finally observed when debugged is the normal timer interrupt will stop and will not resume if Wdg_43_Instance0_Init and Wdg_43_Instance0_Service calls are made with tresos configuration "Development Error Detection " is set. When we disabled 'Development Error Detection ' in tresos, we observe that other interrupts are fine when enabled with wdg calls.  
View full article
Question about ENEDC(S32K3) Hello Team May I ask about ENEDC of K3? Customer uses MCAL with RTD.  However, I did not find the information of RTD about ENEDC. from MSCM, it is showing only ISR core assign configuration.  May I ask, how to enable ENEDC using RTD(MCAL)? Thank you.  Safety_SW Source: Direct Customer Source: NXP Internal Re: Question about ENEDC(S32K3) Thanks for your explanation! Re: Question about ENEDC(S32K3) Hi @Luke_Chun , as per my understanding from RM description, it is needed to enable these bits if you want to have report path form the gaskets to FCCU active. This is why sCheck is enabling these bits otherwise it would be not possible to test the report path. I have to agree that this is essential setup and maybe a lot of K3 customers are not even aware of this setup (just enabling related FCCU channel, but not these bits). Kind Regards, Radoslav Re: Question about ENEDC(S32K3) Hello @RadoslavB  Thanks for your explanation, but I’m not sure about the ENEDC’s proposal. Could you confirm my understanding?  Does ENEDC need to use only “TEST”? Or Is it need to enable for Safety application? (such as, if User wishes to use the check of eDMA Read, ENEDC’s bit2 will be “set” by manually with FCCU configuration.) Thank you.  Re: Question about ENEDC(S32K3) Hi @Luke_Chun , there is no request for configuring MSCM peripheral registers in SAF. The sCheck tests internally enables these registers when it is testing latent faults in associated EDC gaskets, but enabling those bits for application is not covered by any NXP SW. Therefore, customer shall enable these registers manually. For S32K5 there has been defined sBoot check for enablement these registers but again, AFAIK configuration is not in scope of any NXP SW. Kind Regards, Radoslav Re: Question about ENEDC(S32K3) Hi @Luke_Chun, I don't support issues related to Safety driver. To request support from them, you should remove "RTD" label and keep only "Safety_SW" label in your post. Or you can raise a new post only for Safety_SW. Best regards, Dan Re: Question about ENEDC(S32K3) Hi @DanNguyenDuy  Thanks for your update. I also checked Safety drive but I did not find which one is related with ENEDC... May I ask, how to check about it? Thank you. Re: Question about ENEDC(S32K3) Hi @Luke_Chun, RTD driver is not supported for configurating ENEDC. From my point of view, you should check this feature in modules of Safety driver because this register is related to FCCU. Best regards, Dan Re: Question about ENEDC(S32K3) Adding snippet from K3 HW Safety Manual: So right now it is up to customer to follow this AoU - configuration and check is not supported by NXP at the moment. Kind Regards, Radoslav Re: Question about ENEDC(S32K3) Hi @Luke_Chun , there is support for configuration of the INTM peripheral, you can find it in RTD Platform plugin - Interrupt Monitors. On SAF side, sCheck does have INTM latent faults test, but sBoot is not checking any INTM configuration register. In my opinion if Interrupt is as detection/reaction mechanism for safety related fault, then SM1.INT_MON must be active and customer shall fulfill SM4.INT_CHK, sBoot should double check such a configuration. Kind Regards, Radoslav Re: Question about ENEDC(S32K3) Hi @RadoslavB  may I ask one more question? How about the INTM_MM? Is this same with ENEDC? (RTD or SAF does not support for configuration INTM_MM enable. User has to do the configuration INTM_MM by user code.) Thank you.   
View full article
i.MX RT1064:在 GPIO_AD_B1_09 上启用 FlexPWM 的问题 我正在使用 i.MX RT1064,并尝试在以下引脚上生成 PWM 信号。尽管通过 MCUXpresso SDK 配置了 IOMUX 并初始化了 FlexPWM 模块,但我在引脚上看不到任何输出。 GPIO_AD_B1_09:配置为 ALT1 (FLEXPWM4_PWM1_A) 当前设置: 我正在按照 SDK 中的示例——exkmimxrt1064_pwm 作为设置 PWM 的参考。 我使用标准的 50% 占空比进行测试。 问题 RT1064 上的这些特定引脚是否存在已知的内部冲突? 对于GPIO_AD_B1_09,是否需要特定的焊盘属性(DSE、速度)来覆盖默认的 USDHC 功能? 另外,我想在 GPIO_SD_B1_04 和 GPIO_AD_B1_05 上启用 PWM,但在 FlexPWM 下看不到这些引脚,有没有办法在这些引脚上也启用 PWM? 感谢您的帮助。 i.MX RT106x Re: i.MX RT1064: Issues enabling FlexPWM on GPIO_AD_B1_09 您好 ,对于 GPIO_AD_B1_09,请确保 IOMUXC_FLEXPWM4_PWMA1_SELECT_INPUT = IOMUXC_FLEXPWM4_PWMA1_SELECT_INPUT_GPIO_AD_B1_09_ALT1; 已被设置(值为 0x00000001),否则输出将被 GPIO_EMC_02(默认值)取代。 确保驱动设置 IOMUXC_SW_PAD_CTL_PAD_GPIO_AD_B1_09 设置为启用驱动强度,因为将其设置为 0 不会启用输出驱动。 GPIO_SD_B1_04 和 GPIO_AD_B1_05 没有柔性定时器功能: 在此查看 1064 引脚复用器电子表格: https://www.utasker.com/iMX/iMXRT1064/iMX_RT_1064.xls Regards Mark Re: i.MX RT1064: Issues enabling FlexPWM on GPIO_AD_B1_09 你好@shreya1、 你使用的是自定义板还是 EVK?我知道您是根据示例代码将引脚初始化为 PWM,但您修改了示例代码的哪些具体部分?此外,还可以让 ConfigTools 将 GPIO_AD_B1_09 引脚配置为 PWM,甚至整个 PWM 模块。 BR, Edwin. Re: i.MX RT1064: Issues enabling FlexPWM on GPIO_AD_B1_09 嗨 @EdwinHz, 我使用的是自定义板,从示例代码中我根据自己的密码更改了 PWM 编号、子模块和通道。我尝试了另一种方法,也使用了外设工具,让它来管理整个配置,但我没有看到任何输出。 你好@mjbcswitzerland, ,我确保完成了你提到的两项设置,但仍然看不到任何输出。我确定引脚已被路由,因为在将其配置为 GPIO 时,我看到了切换。 Re: i.MX RT1064: Issues enabling FlexPWM on GPIO_AD_B1_09 你好@shreya1、 感谢您的澄清。如果你能分享代码,我可以看一看,以便更好地理解初始化,更好地确定问题是与软件还是硬件有关。 BR, Edwin.
View full article
MIMXRT700-EVK block diagram wrong part number reference I’m working with the RT700 evaluation board (MIMXRT700-EVK), and I’ve come across a discrepancy in the documentation. The block diagram mentions a Macronix flash memory part number as MX25UM51345GXDI00 , but this does not match the BOM file where it mentions MX25UW51345GXDI00. Additionally, the part number on the physical board itself differs from the block diagram     . This is causing confusion, especially when trying to reference documentation or locate the correct data sheet. Could you clarify the exact flash part number currently used on the RT700-EVK? Also, if possible, could NXP provide the data sheet for this specific flash IC? That would be extremely helpful for our development. Re: MIMXRT700-EVK block diagram wrong part number reference I only wanted to report this issue so that in the next errata or next revision of the RT700 EVK board manual NXP can take this into consideration. for the datasheet I'll contact macronix.   Re: MIMXRT700-EVK block diagram wrong part number reference Hi @prathamvora, Please follow the BOM for the memory part number. For the datasheet, please contact Macronix. Best Regards, Pablo Re: MIMXRT700-EVK block diagram wrong part number reference Hi, Thank you for bringing this to our attention. For future reference, you can also use the following link to submit technical documentation feedback. Technical Documentation Feedback | NXP Semiconductors Best Regards, Pablo
View full article
FRDM-IMXRT1186 I want to use FRDM-IMXRT1186. Application 1 > Board Should work with Internal 1.5MB RAM and with External QSPI Flash. A> Ethernet 1 MII port (Named with Label ECAT0) can be configured with TCP/IP MODBUS Master ?  B> Ethernet 2 MII port (Named with Label ECAT1) can be configured with ETHERCAT Master ? Application 2 > Board Should work with Internal 1.5MB RAM and with External QSPI Flash. Arduino & MC Interface connector. A> Ethernet 1 MII port (Named with Label ECAT0) & Ethernet 2 MII port (Named with Label ECAT1) can be used for Ethercat Slave & Arduino & MC Interface connector Analog/Digital GPIO ? Re: FRDM-IMXRT1186 Hi @sarikaautomations , Thanks for your interest in NXP MIMXRT series! 1. A: It's recommend using J56A/J56B (RGMII ports for ETH0/ETH2) for TCP/IP/Modbus communication. Using J57A (ECAT0 port) is not advised. B: No. The RT1180 integrates ESC, not an ECAT master. 2. Yes, this is supported. For more detailed information, please refer to this guide: UM12450: FRDM-IMXRT1186 Board User Manual Best regards, Gavin
View full article
MPXV5050GC6U <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - 该部件是否可以清洗(使用无铅、可水洗的焊料)? 压力传感器 Re: MPXV5050GC6U <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 谢谢。我也是这么想的,但想核实一下。 Re: MPXV5050GC6U <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,辛迪、 任何进入传感器压力开口的清洁剂都可能对设备产生不利影响。因此,绝对建议使用卡普顿胶带密封部件上的检修孔。也可以在清洗前用盖子堵住部件。 此致, 托马斯 PS: I如果我的回答有助于解决您的问题,请标记为"正确" 或 "有帮助"。谢谢。
View full article
TPMS お客様向けの NDA を取得できますか? <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXP様 私はNXPの代理店であるZLGのメンバーです。Anjia は現在バス TPMS を開発中であり、詳細な情報が必要です (FXTH871511DT1 REG #: R691261)。NDAの申請を手伝っていただけますか? Anjiaの情報は次のとおりです。 公司名(中文): 佛山市安驾科技有限公司 会社名:FoShan Angel Technology Co,.Ltd. 公司地址(中文):广东省佛山市南海区獅山镇北园中路王氏车灯西门装配车间2楼 住所:中国広東省仏山市南海区石山鎮北園中路王石ランプ西門組立工場2階 連絡先担当者:陈琼霓(Chen Qiongni) 職種: ソフトウェアエンジニア 電話:13727457848 企業メールボックス:[email protected] プロジェクト: バスTPMS ありがとう! よろしくお願いします オーウェン 圧力センサ
View full article
i.MX8M plus、チャネル B のシングル チャネル DDR i.MX8M plus でチャネル B にのみ接続されたシングル チャネル LPDDR4 16 ビットを使用することは可能ですか? A が B にコネクテッドされ、B が A にコネクテッドされているデザインがありますが、単一チャネルの LPDDR4 に交換した場合、このデザインは機能しますか? i.MX 8M | i.MX 8M ミニ | i.MX 8M ナノ Re: i.MX8M plus, single channel ddr on channel B こんにちは@johan_carlsson 、 NXP サポートにお問い合わせいただきありがとうございます。 iMX8MP ハードウェア設計ガイド、iMX8MP データシート、および iMX8MP リファレンス・マニュアルに基づいています。 いいえ。NXP は、i.MX 8M Plus のチャネル B にのみ接続されたシングルチャネル LPDDR4 (16 ビット) 設計を文書化も検証もしていません。ドキュメントおよびリファレンス デザインで想定されている単一チャネル構成は、チャネル A にあります。 A <-> B が交差するデザイン (A が B に配線され、B が A に配線される) はサポートされていません。 よろしくお願いいたします。 チャビラ Re: i.MX8M plus, single channel ddr on channel B こんにちは、チャビラさん。これについては確かですか? TRMはこう言っています、 SO、DqLnSel レジスタを変更すると (バイト レーン / スライスごとに) A から B に変更できるようになるのではないでしょうか。 Re: i.MX8M plus, single channel ddr on channel B こんにちは@dav1さん、 ここでいくつかの誤解に気づきました。 リファレンスマニュアルによると: 「1 バイト内で PHY dq から DRAM dq へのマッピング (スウィズル) をサポートします… dbyte ごとに… DqLnSel のバイト セット内の各レジスタには一意の値が必要です…」 つまり、PHY を使用すると、単一の 8 ビット スライス (dbyte) 内でボード レベルのビット間のスクランブルを元に戻すことができるということです。たとえば、PHY レーン 3 が同じ dbyte 内の DRAM DQ0 にルーティングする場合、その dbyte に対して Dq0LnSel = 3 を設定します。これにより、スウィズルが論理的に元に戻された後、MRR バイナリ カウンターなどが正しい値を返すようになります。 Re: i.MX8M plus, single channel ddr on channel B こんにちは@dav1 、 現時点では、この構成は検証されておらず、可能になるとは予想されていません。 テストを試みることはできますが、これは RAM PHY の目的の機能の範囲外であるため、信頼性の高い動作は期待できないことに注意してください。 よろしくお願いします、 チャビラ Re: i.MX8M plus, single channel ddr on channel B この回避策を実行することは可能でしょうか - DDRを2チャネルとして設定する - AとBにまたがってインターリーブしないように設定する - Bセクションのみを有効として定義する Re: i.MX8M plus, single channel ddr on channel B 私の回答に何か誤りがありましたら、ご指摘ください。もし、何も問題がなく、この投稿が前回と同様に再度削除されたら、これを Facebook に投稿します。 しかし、RPA ツールがなぜスワップを実行できるのかを示します。 MX8M_Plus_LPDDR4_RPA_v10.xlsx https://community.nxp.com/t5/i-MX-Processors-Knowledge-Base/i-MX-8MPlus-m865S-DDR-レジスタ-プログラミング-エイド-RPA/ta-p/1235352 Re: i.MX8M plus, single channel ddr on channel B 試してみましたか?         Re: i.MX8M plus, single channel ddr on channel B @dav1スワップの問題が発生すると、テーブルが赤くなり、警告が表示されます。ただし、チャネル A とチャネル B が入れ替わると、この RPA ツールは緑色のまま表示され、対応するレジスタも変更されます。 したがって、可能性は 2 つしかありません。 RPA ツールが間違っています。 リファレンスマニュアルが間違っています。 2 つのうち 1 つは真実である必要があります。これは、 @Chaviraが明確に/回答する必要があることです。
View full article
MCX A146VFT MCX A146VFT is not available for download on the official website. MCXA Re: MCX A146VFT Hello @jubilation The page I see when I click on it is not quite the same as yours, on my side I need to manually enter the model number and then click Request to apply, not in the form of a drop down option like in your screenshot. I've tried to submit the request and have received it now. I'll send it to you later via private case. BR Celeste Re: MCX A146VFT There is no download option for VFT packages on this page Re: MCX A146VFT Hello @Jubilee. Thank you for your post. package information for the MCXA146VFT can be found at SOT619-28: HVQFN48 | NXP Semiconductors. If I have misunderstood you and you are asking for other information, please let me know. Have a nice life. BR Celeste
View full article
[i.MX] Dual Wi-Fi(5GHz, 2.4GHz) + BLEによるheart Beatソフトデモ コンテンツ: - i.MX 2台を使用してデュアルバンドWi-Fi(5GHz、2.4GHz)とBLEをテストできます。 - 上記の手作業の分析 詳細については、readmeを参照してください。 テスト環境: 2 台の i.MX 8M Plus EVK または 2 台の i.MX 8M Quad EVK。 試し済みBSP: imx-image-full、LF6.12.20_2.0.0 ローカル conf 設定: IMAGE_INSTALL:append = "bluez5 bluez5-noinst-tools bluez5-obex openobex obexftp glibc-gconv-utf-16 glibc-utils python3-pybluez bluez-tools ppp" 以下は分析結果の例です コンテンツ: - i.MX 2台を使用してデュアルバンドWi-Fi(5GHz、2.4GHz)とBLEをテストできます。 - 上記の手作業の分析 i.MX プロセッサ SW | ダウンロード 日本語ブログ
View full article
Probes Not Found Error when attempting to connect to FRDM46lz board Probes not found error M4 Pro Macbook Sequoia 15.6 while attempting to connect to FRDM46lz board in MCUXpresso. Fellow students with Macs have not encountered this issue. Have been working hard with university staff but not found a solution. Have already attempted plugging into difference ports, restarting device, changing privacy settings, creating a new project, and uninstalling and reinstalling MCUXpresso, among other things. Help would be greatly appreciated, thank you! Re: Probes Not Found Error when attempting to connect to FRDM46lz board Hello @ottofhalb , Thanks for your post. Please open Device Manager and check whether the serial port has been successfully enumerated. In addition, have you ever tried to update the OpenSDA? OpenSDA Serial and Debug Adapter | NXP Semiconductors You may refer to attached "Updating the OpenSDA Firmware.pdf". Hope it helps. BR Celeste
View full article
FLEXIO_CTRL[DBGE] 的含义是什么? DBGE 上的参考手册措辞有点短 "在调试模式下启用 FLEXIO 操作" 如果禁用它并调试代码会发生什么? 试图弄清楚在使用 FLEXIO 和调试 FLEXIO 驱动程序时,哪些调试操作是安全的。 我想,让调试器在接收模式下读取 SHIFTBUFn 或任何其他具有读取副作用的硬件寄存器都是不安全的,即使在调试器中不小心碰了一下也不行。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 你好,@Henrik-Wires 如果"Enable FLEXIO operation in debug mode" 被禁用,当调试器停止 CPU 时,FLEXIO 模块也会停止。冻结所有 FIexIO 活动,直到执行恢复。 下面的主题也讨论了这个问题:这是否意味着 flexio 无法在调试模式下工作? BR、VaneB Re: What is the meaning of FLEXIO_CTRL[DBGE] 你好,@Henrik-Wires 正如 S32K3 参考手册中所述,当设置了相应的 SHIFTSTAT [SSF] 标志时,必须只读取 ShiftBufn 寄存器。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 这是否也意味着,如果禁用 DBGE,使用调试器访问 FLEXIO 寄存器也是安全的,或者使用调试器读取 SHIFTBUFn 会扰乱移位状态标志 SHIFTSTAT[SSF] ? Re: What is the meaning of FLEXIO_CTRL[DBGE] 能否以某种方式阻止 S32DS 尝试访问寄存器?只有短暂访问 SHIFTBUFn 的指针,调试器才会通过清除 SHIFTSTAT[SSF]来访问该值,从而扰乱 FLEXIO 状态。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 你好,@Henrik-Wires 能否请您说明一下这将用于什么目的,或者您想实现什么样的分析? Re: What is the meaning of FLEXIO_CTRL[DBGE] 你好,@Henrik-Wires 集成开发环境本身不会阻止对寄存器的访问。这种保护可以通过 MPU 或 XRDC 来实现;不过,我认为这种方法与您想要实现的目标是一致的。 相反,你可以监测何时设置 SHIFTSTAT [SSF],然后验证相应的 ShiftBufn 寄存器是否包含预期值。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 我正在探索、编写和调试一个定制的低级 FLEXIO 驱动程序。 调试时出现了奇怪的结果,我怀疑是由于 S32DS 在通过驱动程序步进时获取 SHIFTBUFn 寄存器的值,干扰了 SHIFTSTAT[SSF] 状态,导致事件丢失。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 该驱动程序显然会监测 SHIFTSTAT 并相应地访问 ShiftBufn。 我的问题是,使用 S32DS 跳过驱动程序代码可能会触发信号对 SHIFTSTAT 的调试读取,这似乎会干扰该寄存器中的状态。例如,当鼠标指向 SHIFTSTAT 指针时。 如果我小心避免用调试器接触任何此类指针,那么驱动程序就能正常工作。 我曾希望禁用 DBGE 可以让调试器访问 SHIFTSTAT,而不会干扰 **bleep**FSTAT 寄存器的状态,但从你的回复来看,情况并非如此。 Re: What is the meaning of FLEXIO_CTRL[DBGE] 你好,@Henrik-Wires 禁用 DBGE 位并不能防止调试器干扰 SHIFTSTAT 等寄存器,因为 DBGE 并不控制调试读取行为。相反,DBGE 可控制外设是否在内核停止运行时继续运行。
View full article
ST7701 驱动程序 Hello 我正在尝试与 ST7701 显示控制器通信。 是否有一些例子?如果可能的话,谁能分享一下? 我使用的是 i.MX RT1170 板。在 SDK 示例中,我找到了 HX8394、RM68191 和 RM68200 显示控制器的驱动程序。我想为 ST7701 找到类似的东西。 谁能帮帮我? 谢谢,并致以诚挚的问候、 弗朗切斯科-索利托 Re: ST7701 drivers 你好,@SolitoFrancesco、 目前,我们的 SDK 中没有任何针对ST7701 显示控制器 的驱动程序支持。 与该控制器的集成必须手动完成。 必须调整 LCDIF 模块的分辨率值、同步信号和时钟频率,以便与显示控制器兼容。如果使用 EVK,则可以使用 SDK 驱动程序并调整以下功能的值: BOARD_InitLcdifClock() BOARD_InitMipiDsiClock() BOARD_SetMipiDsiConfig() 这些函数以及同步值的宏都在 " display_support.c " 中引用文件,这是调整显示控制器支持时需要关注的主要文件。   另外,请务必阅读以下应用笔记,因为它详细介绍了液晶显示器设置的工作原理以及其他有用的注意事项:i.MX RT elcDIF RGB 模式用例 (nxp.com)   BR, Edwin. Re: ST7701 drivers 早上好 我按照显示器制造商和驱动程序制造商的指示,修改了你提到的文件。我可以通过 MIPI 对驱动寄存器进行写入和读取。我可以用示波器看到差分 MIPI 波形(也是在"配置" 阶段之后),但仍然无法在显示屏上看到任何东西。我正在使用恩智浦 SDK 中名为"mipi_dsi_compiance_test" 的演示示例。 您能提供更多帮助吗? 谢谢,并致以诚挚的问候、 弗朗切斯科-索利托 Re: ST7701 drivers 你好,@SolitoFrancesco、 您能在运行时调试代码吗?是否打印出任何错误信息?您在数据线上看到了哪些数据模式?这些模式是否与 readme.md 文件中描述的预期模式一致? BR, Edwin. Re: ST7701 drivers 你好 我也遇到了同样的情况(相同的驱动程序和分辨率,基础是在开发板上运行的测试示例)。控制器已配置好,我也可以读取状态(没有任何错误),DSI 线路上的数据也已存在,但屏幕上什么也没显示。 将 dsi_dpi_config 中的 videoMode 从 kDSI_DpiBurst 改为其他模式也没有效果。 看起来屏幕不接受视频流? Re: ST7701 drivers 你好示例项目在显示 DEMO_PANEL_RK055MHD091 时运行正常。然后,我切换到最终应用中必须使用的面板。它的分辨率不同(480x800),因此我调整了定义。然后,我更改了驱动程序(fsl .h和 .c文件),我就能与显示器通信了。我可以写入和回读寄存器。但在配置显示屏后,当示例项目开始发送图像缓冲区时,我能在示波器上看到 MIPI 波形,但显示屏上什么也看不到。假设显示屏没有损坏,因为我尝试通过专用命令打开所有像素,我可以看到屏幕完全白色。我不明白的是,问题是出在显示器的配置上,还是出在示例项目中我必须调整的其他地方。我联系了显示器制造商和控制器制造商,但我需要各方尽可能多的帮助。有可能为安装在显示器上的控制器获取 fsl 驱动程序吗?它是 Sitronix ST7701。请告诉我。谢谢并致以诚挚的问候,弗朗切斯科 Re: ST7701 drivers 您好,Rino 我正在对我的设置和您的设置进行比较(最后我会上传到这里)。 同时,我注意到我使用的是 ST7701,而你使用的可能是 ST7701S(后缀为 S)。我认为它们很相似,但我不确定。 我注意到,现在即使不进行任何初始化,显示屏也能正常工作。"开始时速度很慢," ,硬度也很低,但还是能用。然后,如果我只发送 0xE0 至 0xEF 的设置(ST7701 数据表中没有记录),显示器启动速度非常快,颜色也正确。似乎所有其他设置都没有必要(听起来很奇怪)。 让我们保持联系。完成后,我将与大家分享比较结果。 再次感谢您。 亲切的问候, Francesco Re: ST7701 drivers 你好,Rino 非常感谢你的建议。在我的应用中似乎也是如此。好极了我可能需要更好的设置,但现在我可以在屏幕上看到图像了。 如果可能的话,请与我分享您的配置,以便我与您的配置进行比较,更好地完善配置。如果我看到了不同的东西,我会在这里告诉你。 再次感谢您。您是如何设置 enableNonContinuousHsClk 的? 致以亲切的问候, Francesco Re: ST7701 drivers 你好,弗朗切斯科 、 我设法让显示屏正常工作。 在 DisplayTFT_SetMipiDsiConfig 函数中,添加一行内容: dsiConfig.enableNonContinuousHsClk= true; 例如,在这几行之后: DSI_GetDefaultConfig(&dsiConfig); dsiConfig.numLanes = DISPLAY_MIPI_DSI_LANE_NUM; dsiConfig.autoInsertEoTp= true; 假设你已经正确配置了显示 IC(如果有必要,我可以分享我的屏幕配置)和显示时钟(我的设置大约是 26MHz)。 致以最诚挚的问候,克里斯 Re: ST7701 drivers 你好 文件是根据 SDK 中的其他驱动程序创建的。 您还可以将延迟时间改为更短。 今天上午,我确认了配置顺序,并按照显示器制造商的建议做了一些更改,但没有进一步改善,于是我开始仔细研究 DSI 配置本身。我知道时钟很好,视频模式(突发模式)也是如此,所以剩下的唯一选择是 DSI 本身的选择。 熟悉(以及文档中的其他部分): https://docs.nxp.com/bundle/AN13573/page/topics/continuous_vs_non-continuous_clock.html BR, Chris Re: ST7701 drivers 你好,里诺 按照约定,请在附件中查看您和我的设置对比。我没有细说,但如果我或你会在差异中发现一些有趣的东西,请让我们继续写下去。 此致敬礼, 弗朗西斯科 Re: ST7701 drivers 你好,弗朗切斯科、 抱歉耽搁了。 我浏览了你的对比,发现了很多差异,部分原因是屏幕本身(我们有玻璃/触摸屏/屏幕三明治,对此进行了配置修复——或者至少供应商是这样解释的) 🙂 )。 有些设置(如功率控制)不是启动所必需的,而是为了提高质量(对比度/伽玛设置)。 有趣的是,无论我们是否运行"Sunlight Readable Enhancement" 这个东西,我想他们称之为 "阳光可读增强",都是必需的。根据这些数据,它可以自动设置最佳参数。如果它们不正确或缺失(默认值),则需要一段时间才能自动设置它们 -> 因此,正如你所注意到的,启动速度会很慢。 文档本身可能相当令人恼火,许多命令都没有文档说明,如果没有文档,往往无法完全启动屏幕。不只是这款机型,我在其他几款态龙机型上也遇到过这种情况。 亲切的问候, Chris
View full article
MPC 8347ECZQAGD8 Does anyone have the BSDL file for this device? What is this device ID Code? Communication & Control(I3C | I2C | SPI | FlexCAN | Ethernet | FlexIO)
View full article
ST7701ドライバ Hello ST7701 ディスプレイ コントローラと通信しようとしています。 いくつか例はありますか?可能であれば、共有していただける方はいらっしゃいますか? i.MX RT1170 ボードを使用しています。SDK のサンプルには、HX8394、RM68191、および RM68200 ディスプレイ コントローラ用のドライバが見つかりました。ST7701 に似たものを見つけたいと思います。 誰か助けてくれませんか? ありがとうございます。 フランチェスコ・ソリート Re: ST7701 drivers こんにちは、 @SolitoFrancescoさん、 現時点では、 ST7701 ディスプレイ コントローラ用の SDK にはドライバ サポートがありません。このコントローラとの統合は手動で行う必要があります。 ディスプレイ コントローラとの互換性を保つには、LCDIF モジュールの解像度値、同期信号、クロック周波数を調整することが重要です。EVK を使用する場合は、SDK ドライバを使用して次の関数の値を調整できます。 BOARD_InitLcdifClock() BOARD_InitMipiDsiClock() BOARD_SetMipiDsiConfig () これらの関数は同期値のマクロとともにすべて「display_support.c」で参照されています。このファイルは、ディスプレイ コントローラ のサポートを調整するときに重点的に扱うファイルになります。   また、次のアプリケーションノートも必ずご覧ください。LCDディスプレイのセットアップ方法やその他の役立つ考慮事項について、さらに詳しく説明しています。i.MX RT eLCDIF RGBモードの使用例(NXP.com)   BR、 エドウィン。 Re: ST7701 drivers おはよう ディスプレイ製造元とドライバ製造元から受け取った指示に従って、ご指摘のファイルを変更しました。MIPI を介してドライバ レジスタに書き込み、読み取ることができます。オシロスコープで差動 MIPI 波形を見ることはできますが (「構成」フェーズ後も)、ディスプレイにはまだ何も表示されません。私は「mipi_dsi_compiance_test」というNXP SDK のデモ例を使用しています。 もっと助けていただけますか? ありがとうございます。 フランチェスコ・ソリート Re: ST7701 drivers こんにちは、 @SolitoFrancescoさん、 実行中にコードをデバッグできましたか?何かエラーメッセージが印刷されていますか?データ ラインにはどのようなデータ パターンが表示されますか?これらのパターンは、readme.md ファイルに記載されている予想されるパターンと一致していますか? BR、 エドウィン。 Re: ST7701 drivers こんにちは。サンプル プロジェクトは、ディスプレイ DEMO_PANEL_RK055MHD091 で正常に動作します。次に、最終的なアプリケーションで使用するパネルに切り替えました。解像度が異なる (480x800) ため、定義を調整しました。その後、ドライバを変更しました(fsl .hおよび.cファイル) を読み込み、ディスプレイと通信できるようになりました。レジスタへの書き込みと読み出しが可能です。しかし、ディスプレイの構成後、サンプル プロジェクトがイメージ バッファーの送信を開始すると、オシロ スコープ上で MIPI 波形が表示されますが、ディスプレイには何も表示されません。専用コマンドを使用してすべてのピクセルをオンにしてみたところ、画面が完全に白く表示されるため、ディスプレイは壊れていないと考えられます。私が理解できないのは、問題がディスプレイの構成にあるか、またはサンプル プロジェクトで適応させる必要がある他の何かにあるかということです。ディスプレイメーカーとコントローラメーカーに問い合わせましたが、各方面からの可能な限りの支援が必要です。ディスプレイに搭載されているコントローラー用の fsl ドライバーを入手することは可能ですか?Sitronix ST7701 です。私にお知らせください。ありがとう、そしてよろしく。フランチェスコ Re: ST7701 drivers こんにちは、 私も同じ状況です (同じドライバと解像度、ベースは開発ボードで動作したテスト例です)。コントローラーは構成されており、ステータスも読み取ることができ (エラーなし)、DSI ラインにデータも存在しますが、画面には何も表示されません。 dsi_dpi_config の videoMode を kDSI_DpiBurst から他のモードに変更しても効果はありません。 画面がビデオストリームを受け入れていないようですね? Re: ST7701 drivers こんにちは、フランチェスコさん。 ディスプレイを動作させることができました。 DisplayTFT_SetMipiDsiConfig 関数に次の行を追加します。 dsiConfig.enableNonContinuousHsClk= 真; たとえば、次の行の後: DSI_GetDefaultConfig(&dsiConfig); dsiConfig.numLanes = DISPLAY_MIPI_DSI_LANE_NUM; dsiConfig.autoInsertEoTp= 真; ディスプレイ IC が正しく構成されており (必要な場合は、画面の構成を共有できます)、ディスプレイ クロック (私の設定は約 26 MHz) も正しく構成されていることを前提としています。 よろしくお願いいたします、クリス Re: ST7701 drivers こんにちは、リノ ご提案ありがとうございます。私のアプリケーションでも動作するようです。素晴らしい。おそらく何かをより適切に設定する必要があると思いますが、今は画面に画像が表示されるようになりました。 可能であれば、設定を共有していただければ、私の設定と比較して、より改善することができます。何か違うことが分かったらここでお知らせします。 改めて感謝申し上げます。enableNonContinuousHsClk 設定はどこで思いつきましたか? 敬具、 フランチェスコ Re: ST7701 drivers こんにちは、リノ 私の設定とあなたの設定を比較しています(最後にここにアップロードします)。 その間、私が気づいたのは、私が使用しているのは ST7701 ですが、おそらくあなたは ST7701S (末尾に S が付く) を使用しているということです。似ていると思いますが、よく分かりません。 気づいたことは、初期化をまったく行わなくてもディスプレイが機能するようになったことです。起動は「ゆっくり」で明るさも低いですが、動作します。次に、0xE0 から 0xEF までの設定 (ST7701 データシートに記載されていない) のみを送信すると、ディスプレイが非常に高速に起動し、正しい色で表示されます。その他の設定はすべて必要ないようです(奇妙に聞こえます)。 連絡を取り合いましょう。終わったら比較を共有します。 改めてお礼申し上げます。 敬具、 フランチェスコ Re: ST7701 drivers こんにちは、 ファイルは SDK 内の他のドライバに基づいて作成されました。 遅延を短いものに変更することもできます。 今朝、設定手順を確認し、ディスプレイメーカーの推奨に従っていくつか変更してみましたが、それ以上の改善が見られなかったため、DSI 設定自体を詳しく調べ始めました。クロックは正常で、ビデオ モード (バースト モード) も正常であることはわかっているので、残されたオプションは DSI 自体のオプションのみでした。 以下の内容(およびドキュメントの他の部分)を理解します。 https://docs.nxp.com/bundle/AN13573/page/topics/連続クロックと非連続クロック.html BR、クリス Re: ST7701 drivers こんにちは、リノ お約束どおり、あなたと私の設定の比較を添付ファイルでご覧ください。詳しくは触れませんでしたが、私や皆さんが相違点の中に何か興味深いものを見つけたら、ぜひここに書き続けましょう。 敬具 フランチェスコ Re: ST7701 drivers こんにちは、フランチェスコさん。 遅れてごめんなさい。 あなたの比較を見て、多くの違いに気づきました。それは、一部は画面自体によるものです(私たちはガラス/タッチ/スクリーンのサンドイッチを使用しており、それに対する構成修正がありました - 少なくともサプライヤーはそう説明していました) 🙂 ) が表示されます。 電源制御などの一部の設定は起動には必要ありませんが、品質の向上(コントラスト/ガンマ設定)に必要です。 面白いのは、それを実行しているかどうかに関係なく、この「Sunlight Readable Enhancement」と呼ばれる機能全体が必須だということです。このデータに基づいて、最適なパラメータを自動的に設定します。これらが間違っているか欠落している場合(デフォルト値)、自動的に設定されるまでに時間がかかります -> そのため、お気づきのとおり、起動が遅くなります。 ドキュメント自体はかなりイライラさせるもので、多くのコマンドはドキュメント化されておらず、それらなしでは画面を完全に起動することが不可能な場合がよくあります。これはこのモデルに限ったことではなく、他のいくつかの Sitronix モデルでも同様の現象が発生しました。 敬具、 クリス
View full article