Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32k358 获得燃烧 您好, 请说明在与 AFE 通信时导致 MCD 损坏或烧毁的原因。 Re: S32k358 Getting Burn 你好@arun464、 在与外部模拟前端 (AFE) 通信时,MCU(例如 S32K358)可能损坏或出现故障的潜在原因有以下几种: 电压等级不匹配 如果 AFE 使用的逻辑电平(如 5 V)与 MCU 使用的逻辑电平(通常为 3.3 V)不同,则直接连接而不进行适当的电平转换可能会导致 MCU 引脚电压过高。 电源顺序不正确 如果 AFE 比 MCU 先上电(反之亦然),信号线可能会浮动或驱动意外电压,从而导致闩锁或损坏。 接地问题 较差的接地基准或接地回路会在设备之间产生电压差,从而导致通信线路上的电流涌动。 ESD 或 EMI 事件 缺乏适当的 ESD 保护或屏蔽会导致瞬态电压损坏 MCU I/O。 短路或接线错误 不正确的引脚映射或装配过程中的意外短路会导致永久性损坏。 I/O 线路电流过大 相互驱动输出(总线争用)或不正确的上拉/下拉配置会给引脚带来压力。 为了帮助我们进一步分析,请您分享一下: MCU-AFE 接口示意图(包括电源轨和信号线)。 AFE 部件号和使用的通信协议(SPI、I²C 等)。 故障发生前的任何观察条件(如开机期间、负载情况下)。 这将使我们能够提供更具体的保护和设计改进建议。 顺祝商祺! 帕维尔
View full article
i.MX8Qを例に、gpioget/gpiosetでGPIO(libgpiod)を使用する方法 GPIO制御におけるgpiogetおよび「cat /sys/class/gpio」の違い。 gpioget : これは、 libgpiod ライブラリが提供するコマンドライン・ユーティリティです。最新のLinux GPIOキャラクタ・デバイス・インターフェース( /dev/gpiochipN )を介して、GPIOラインとやり取りするように設計されています。 /sys/class/gpio : これは、LinuxのGPIO制御のためのsysfsレガシー・インターフェースを指します。このインターフェースは、かつて広く使用されていましたが、Linuxカーネルバージョン6.0以降、 libgpiod キャラクタ・デバイス・インターフェースが採用され、正式に非推奨になりました。 以下は、i.MX8Q-MEK、L6.12.3 BSPでテストされたlibgpiodの例です。 デバイスツリーの設定: この例では、GPIO1-05およびGPIO1-06を使用します。GPIO pinctrlを「gpio_test」のような特定のグループ、または「gpio-keys」のようなドライバの下に置くことができます。 gpio_test: gpio-test { pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_gpio_test_default>; pinctrl-1 = <&pinctrl_gpio_test_sleep>; status = "okay"; }; gpio-keys { compatible = "gpio-keys"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_gpio_example_default>; pinctrl-1 = <&pinctrl_gpio_example_sleep>; key_wakeup2{ label = "wakeup_key"; gpios = <&lsio_gpio2 1 GPIO_ACTIVE_LOW>; linux,code = ; wakeup-source; }; pinctrl_gpio_test_default: gpiotestgrp_default { fsl,pins = < IMX8QM_LVDS0_I2C0_SDA_LSIO_GPIO1_IO07 0x06000061 IMX8QM_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x06000041 IMX8QM_MIPI_CSI1_I2C0_SCL_LSIO_GPIO2_IO00 0x06000021 IMX8QM_LVDS0_I2C0_SCL_LSIO_GPIO1_IO06 0x06000021 >; }; pinctrl_gpio_test_sleep: gpiotestgrp_sleep { fsl,pins = < IMX8QM_LVDS0_I2C0_SDA_LSIO_GPIO1_IO07 0x07800061 IMX8QM_QSPI1A_DATA0_LSIO_GPIO4_IO26 0x07800041 IMX8QM_MIPI_CSI1_I2C0_SCL_LSIO_GPIO2_IO00 0x07800021 IMX8QM_LVDS0_I2C0_SCL_LSIO_GPIO1_IO06 0x07800021 >; }; pinctrl_gpio_example_default: gpioexamplegrp_default { fsl,pins = < IMX8QM_LVDS0_GPIO01_LSIO_GPIO1_IO05 0x06000021 IMX8QM_MIPI_CSI1_I2C0_SDA_LSIO_GPIO2_IO01 0x06000021 >; }; pinctrl_gpio_example_sleep: gpioexamplegrp_sleep { fsl,pins = < IMX8QM_LVDS0_GPIO01_LSIO_GPIO1_IO05 0x07800021 IMX8QM_MIPI_CSI1_I2C0_SDA_LSIO_GPIO2_IO01 0x07800021 >; }; GPIO機能をテストするためのカーネル・コマンド: gpiodetect および gpioinfo コマンド: root@imx8qmmek:~# gpiodetect gpiochip0 [5d080000.gpio] (32 lines) gpiochip1 [5d090000.gpio] (32 lines) gpiochip2 [5d0a0000.gpio] (32 lines) gpiochip3 [5d0b0000.gpio] (32 lines) gpiochip4 [5d0c0000.gpio] (32 lines) gpiochip5 [5d0d0000.gpio] (32 lines) gpiochip6 [5d0e0000.gpio] (32 lines) gpiochip7 [5d0f0000.gpio] (32 lines) root@imx8qmmek:~# gpioinfo -c 1 gpiochip1 - 32 lines: line 0: unnamed input line 1: unnamed input line 2: unnamed input line 3: unnamed input line 4: unnamed input line 5: unnamed input line 6: unnamed output line 7: unnamed output line 8: unnamed input line 9: unnamed input line 10: unnamed input line 11: unnamed input line 12: unnamed input line 13: unnamed output consumer=regulator-pcie line 14: unnamed input line 15: unnamed input line 16: unnamed input line 17: unnamed input line 18: unnamed input line 19: unnamed input line 20: unnamed input line 21: unnamed input line 22: unnamed input line 23: unnamed input line 24: unnamed input line 25: unnamed input line 26: unnamed input line 27: unnamed input line 28: unnamed input line 29: unnamed input line 30: unnamed input line 31: unnamed input GPIO1-05およびGPIO1-06が設定される前の現在のGPIO設定を表示するには、 cat /sys/kernel/debug/gpio を使用します。 root@imx8qmmek:~# cat /sys/kernel/debug/gpio gpiochip0: GPIOs 512-543, parent: platform/5d080000.gpio, 5d080000.gpio: gpio-526 ( |scl ) out lo gpio-527 ( |sda ) in lo gpiochip1: GPIOs 544-575, parent: platform/5d090000.gpio, 5d090000.gpio: gpio-557 ( |regulator-pcie ) out hi gpiochip2: GPIOs 576-607, parent: platform/5d0a0000.gpio, 5d0a0000.gpio: gpio-577 ( |wakeup_key ) in hi ACTIVE LOW gpiochip3: GPIOs 608-639, parent: platform/5d0b0000.gpio, 5d0b0000.gpio: gpio-618 ( |spi1 CS0 ) out hi ACTIVE LOW gpiochip4: GPIOs 640-671, parent: platform/5d0c0000.gpio, 5d0c0000.gpio: gpio-641 ( |enable ) out hi ACTIVE LOW gpio-643 ( |regulator-usbotg1-vb) out lo gpio-647 ( |usdhc2-vmmc ) out hi gpio-667 ( |enable ) out lo ACTIVE LOW gpio-668 ( |host-wake ) in hi ACTIVE LOW gpio-669 ( |PCIe reset ) out hi ACTIVE LOW gpiochip5: GPIOs 672-703, parent: platform/5d0d0000.gpio, 5d0d0000.gpio: gpio-673 ( |mux ) out hi gpio-693 ( |wp ) in lo gpio-694 ( |cd ) in lo ACTIVE LOW gpiochip6: GPIOs 704-735, parent: platform/5d0e0000.gpio, 5d0e0000.gpio: gpiochip7: GPIOs 736-767, parent: platform/5d0f0000.gpio, 5d0f0000.gpio: gpioset コマンドを使用してGPIO出力を設定します。また、GPIOの方向を変更することもできます(入力→出力)。 #set gpiochip1-5 and 1-6 root@imx8qmmek:~# gpioset -c gpiochip1 6=1 & [1] 700 root@imx8qmmek:~# gpioset -c gpiochip1 5=1 & [2] 702 上記のコマンドの変更点を cat /sys/kernel/debug/gpio および gpioinfo -c 1 で確認してください。 root@imx8qmmek:~# cat /sys/kernel/debug/gpio gpiochip0: GPIOs 512-543, parent: platform/5d080000.gpio, 5d080000.gpio: gpio-526 ( |scl ) out lo gpio-527 ( |sda ) in lo gpiochip1: GPIOs 544-575, parent: platform/5d090000.gpio, 5d090000.gpio: gpio-549 ( |gpioset ) out hi gpio-550 ( |gpioset ) out hi gpio-557 ( |regulator-pcie ) out hi gpiochip2: GPIOs 576-607, parent: platform/5d0a0000.gpio, 5d0a0000.gpio: gpio-577 ( |wakeup_key ) in hi ACTIVE LOW gpiochip3: GPIOs 608-639, parent: platform/5d0b0000.gpio, 5d0b0000.gpio: gpio-618 ( |spi1 CS0 ) out hi ACTIVE LOW gpiochip4: GPIOs 640-671, parent: platform/5d0c0000.gpio, 5d0c0000.gpio: gpio-641 ( |enable ) out hi ACTIVE LOW gpio-643 ( |regulator-usbotg1-vb) out lo gpio-647 ( |usdhc2-vmmc ) out hi gpio-667 ( |enable ) out lo ACTIVE LOW gpio-668 ( |host-wake ) in hi ACTIVE LOW gpio-669 ( |PCIe reset ) out hi ACTIVE LOW gpiochip5: GPIOs 672-703, parent: platform/5d0d0000.gpio, 5d0d0000.gpio: gpio-673 ( |mux ) out hi gpio-693 ( |wp ) in lo gpio-694 ( |cd ) in lo ACTIVE LOW gpiochip6: GPIOs 704-735, parent: platform/5d0e0000.gpio, 5d0e0000.gpio: gpiochip7: GPIOs 736-767, parent: platform/5d0f0000.gpio, 5d0f0000.gpio: root@imx8qmmek:~# gpioinfo -c 1 gpiochip1 - 32 lines: line 0: unnamed input line 1: unnamed input line 2: unnamed input line 3: unnamed input line 4: unnamed input line 5: unnamed output consumer=gpioset line 6: unnamed output consumer=gpioset line 7: unnamed output line 8: unnamed input line 9: unnamed input line 10: unnamed input line 11: unnamed input line 12: unnamed input line 13: unnamed output consumer=regulator-pcie   レガシーGPIO SYSFS(L6カーネル以上ではデフォルトで無効)を有効にする方法 このコミットのコメントを参照してください。 https://github.com/nxp-imx/linux-imx/commit/3b4feb21158f873269ff3fbe2fe8d23a88d64b24 commit 3b4feb21158f873269ff3fbe2fe8d23a88d64b24 Author: Linus Walleij Date: Tue Nov 10 15:27:24 2020 +0100 gpio: sysfs: Enforce character device If users select sysfs support they get the character device as well so that end-users cannot complain that they "only have sysfs on my system". They should have the character device at all times. If someone is in so dire need of stripping out the character device while still enabling the sysfs ABI they can very well patch the kernel. Also only show this obsolete option to expert users. Signed-off-by: Linus Walleij Link: <> diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig index 5d4de5cd6759..4dd566f7ea39 100644 --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig @@ -59,8 +59,9 @@ config DEBUG_GPIO that are most common when setting up new platforms or boards. config GPIO_SYSFS - bool "/sys/class/gpio/... (sysfs interface)" + bool "/sys/class/gpio/... (sysfs interface)" if EXPERT depends on SYSFS + select GPIO_CDEV # We need to encourage the new ABI help Say Y here to add the legacy sysfs interface for GPIOs. パッチから、GPIO_SYSFSを有効にするための最良の方法は、CONFIG_EXPERT= y、次に、CONFIG_GPIO_SYSFS= Yを有効にします。パッチを元に戻す必要はありません。 SYSFSは、LinuxのGPIO制御のためのレガシー・インターフェースです。このインターフェースは、かつて広く使用されていましたが、Linuxカーネルバージョン6.0以降、libgpiodキャラクタ・デバイス・インターフェースが採用され、正式に非推奨になりました。 i.MX Processors
View full article
An Overview of the I²C Bus (Japanese blog) 0. Table of Contents table of contents What is I²C? 1.1 History and specifications 1.2 Controller/Target Physical/Electrical Characteristics 2.1 Number of signal lines: SDA, SCL 2.2 Open-drain output (wired-AND) 2.3 Clock Frequency 2.4 Connection Topology protocol 3.1 Required and optional features 3.2 Data Transfer Unit 3.3 Bus state: Start and end of transfer 3.4 Transaction Structure 3.5 Write and Read Transactions Reference materials 1. What is I²C? 1.1 History and specifications The I²C (I-squared-C) bus is a serial bus specification developed and released in 1982 by Philips (now NXP Semiconductors) of the Netherlands. I²C is an abbreviation of " Inter Integrated Circuit " which is written as "IIC" with the overlapping "I" squared. At the time this bus was developed, television and radio circuits were still being adjusted and set using variable resistors, variable capacitors and screws on the cores of coils. I²C began to be used as a bus to replace these components and to allow controllers to be built into devices and factory computers in order to control and automate each function. For this purpose, the original clock frequency was set to 100 kHz and large amounts of data transfer was not anticipated. When I joined Philips in the late '80s, the lab was equipped with CCTV (Computer Controlled TV) and other equipment to demonstrate this concept. The current I²C specification is managed by NXP Semiconductors , a company formerly formed by Philips' semiconductor division. This specification is published as the " I²C-bus specification and user manual " ( document number UM10204 ) , with the latest version being Rev.7. The Japanese version , Rev.5, has been published as the " I²C bus specification and user manual ." The differences between Rev.5 and Rev.7 are changes to Figures 41 and 42, an addition to Table 5, the change of the terms master/slave to controller/target, as in I3C, and the addition of "I3C Overview" in Chapter 9 (see Table 1: Revision History in Rev.1 for details). As these differences do not affect the main parts of the I²C specification, the Japanese version can be used as a reference. 1.2 Controller/Target I²C communication always takes place in a master-slave relationship. The terms used to refer to these roles are controller and target , respectively [Figure 1]. スクリーンショット 2025-02-02 9.47.05.png Figure 1: Controller and Target The specification allows multiple controllers to exist on one I²C bus. Older specifications used the terms "master/slave", but this has now been changed to "controller/target". 2. Physical/Electrical Characteristics 2.1 Number of signal lines: SDA, SCL I²C is a two-wire serial bus, one for the clock and one for the data . Since data is exchanged synchronously with the clock, it is classified as a "synchronous serial interface." Data communication can be done in both sending and receiving directions, but because it is done over a single data line, these cannot be done simultaneously and must be switched between. For this reason, it is a communication method called half-duplex , rather than full-duplex, which allows simultaneous sending and receiving. The clock and data signal lines are called SCL (serial clock line) and SDA (serial data line) , respectively. Data is transmitted or received one bit at a time in synchronization with the clock cycle. 2.2 Open-drain output (wired-AND) One of the distinctive features of I²C is that signals are generated using a method called "open drain." In many communications, a method called push-pull is used to output digital signals. Push-pull is a method in which a specified voltage is output (pushed) on the signal line when a HIGH signal is output, and a LOW signal is pulled to GND (pulled) [Figure 2-a]. Open drain is similar to "pull" in that it outputs LOW, but when it outputs HIGH it goes into a high impedance state. In this state, a pull-up resistor connected to the signal line ensures that the specified voltage is obtained [Figure 2-b]. スクリーンショット 2025-02-02 6.44.00.png Figure 2-a: Push-pull output スクリーンショット 2025-02-02 6.44.11.png Figure 2-b: Open-drain output So why is this output method used? This is because I²C allows multiple devices to output to the same signal line simultaneously. When multiple devices are in an output state, if even one device is outputting LOW, the signal will go LOW. This method of connecting a signal that is HIGH when all devices output HIGH and LOW otherwise is called " wired-AND " [Figure 3]. スクリーンショット 2025-02-02 7.14.11.png Figure 3: Wired and connected   I²C has optional features called " clock stretching " and " multi-controller ." These allow multiple devices connected to the same bus to output simultaneously, and manage their status using open-drain connections. The I²C HIGH voltage is not specifically defined in the specifications. The power supply voltage (VDD) to which the pull-up resistor is connected varies depending on the device. When communicating, a voltage that can be used commonly between connected devices must be used. In many cases, voltages such as 5V or 3.3V are used for VDD, but in SoC chips and other devices where voltages are becoming increasingly low, voltages of 1V or less are sometimes used. The signal voltage for I²C input is set to LOW at 0.3VDD or less , and HIGH at 0.7VDD or more , so when connecting I²C buses with different voltages, a " signal voltage converter ( VLT : voltage level translator)" must be used. To convert this signal voltage, you need to select a device that can be used with I²C, taking into account that it is a bidirectional open-drain signal. With I²C, you must also take into account the analog behavior of signals. This is the time it takes for the signal output to change due to the open drain. The fall time is fast when going from HIGH to LOW, but the rise time when going from LOW to HIGH can be slow depending on the state of the bus. Specifically, the rise time becomes slower as the number of connected devices increases or the length of the signal line becomes longer. This occurs because the capacitance of the signal line increases [Figure 4]. The allowable capacitance is capped by each mode, which dictates the maximum I²C clock speed. capacitance.png Figure 4: Capacitance and signal rise time   2.3 Clock Frequency I²C defines " modes " based on the maximum clock frequency that can be used [Table 1]. The most basic mode is called standard mode ( Sm ) and operates below 100kHz . Next there is the fast mode ( Fm ) with an upper limit of 400kHz. These Sm and Fm modes are supported by most controllers and targets . There is also Fast Mode Plus ( Fm+ ), which can operate at clock speeds of less than 1MHz and is used for applications with high data rates. Furthermore, there is a high-speed mode ( HS-mode or Hs ) with a maximum speed of 3.4MHz . This high-speed mode has a specified protocol for switching to communication at this speed, and a bridge is required to mix communication with other modes. There are not many devices equipped with controllers that support this mode. An ultrafast mode is also specified for special applications. This has a clock upper limit of 5MHz and limits communication direction to one direction from controller to target, making it incompatible with other modes. When "I²C" is used without mentioning the mode, it often refers to the most common standard mode or fast mode, and this blog will be based on these modes. mode Abbreviation Maximum Clock Frequency remarks Standard Mode Sm 100kHz The most popular mode Generally speaking, I²C refers to up to Fm compatible with 400kHz. Fast Mode Fm 400kHz First Mode Plus Fm+ 1MHz Specifications with expanded speed, current draw, and bus capacity Controllers with this capability are installed in many microcontrollers. High Speed Mode Hs 3.4MHz There aren't many adoption cases Compatible with Sm and Fm. Switch to Hs mode by protocol. A bridge is required when mixing Sm and Fm devices on the bus. Ultra Fast Mode UFm 5MHz Write-only acceleration mode Used with dedicated controllers and targets. Not compatible with other I²C modes. Table 1: Frequency and features of each mode   2.4 Connection Topology Any device connected to I²C is connected to two signal lines: SCL and SDA . The connection is called a " multi-drop " connection. Each device is simply connected by "hanging" from two wires [Figure 5]. The number of devices that can be connected is limited by the " bus capacity ." The longer the signal line and the more devices connected, the greater the bus capacity. Communication takes place between a "controller" and a "target". All communication is initiated by the controller. In I²C, each transfer is performed one-to-one between the controller and the target. It is possible to intentionally have multiple targets have the same address, but from the controller's perspective, only "communication to one address" is possible [Figure 6]. The controller specifies the device to communicate with by using a target address and indicates the direction of data transfer. The controller controls all transfers (starting and ending, specifying the communication target and transfer direction, and outputting the clock to SCL). It is also possible to have multiple controllers on one I²C bus. This is possible using an optional I²C function called " multi-controller ." In this configuration, after one controller finishes a transfer, another controller can communicate. A bus arbitration procedure has also been established in case multiple controllers start a transfer at the same time. In a multi-controller configuration, all connected controllers must support this arbitration. However, you will not see many systems with a multi-controller configuration. Many I²C controllers built into microcontrollers and other devices support multi-controller configurations, but most simple systems use a single controller. In this article, we will only consider the single controller case in order to explain the basics of I²C. スクリーンショット 2025-02-02 8.42.43.png Figure 5 : Multi-drop connection   スクリーンショット 2025-02-02 9.05.39.png Figure 6: Communication to a single target address 3. Protocol 3.1 Required and optional features The protocol determines how data is transferred. The I²C protocol has required and optional functions. The multi-controller mentioned in the previous section is an optional function. As mentioned there, we will not touch on optional functions here, but will only explain the required functions. The required and optional features of I²C are summarized in [Table 2]. スクリーンショット 2025-02-02 9.48.32.png Table 2: I²C Functions. Required/Optional (Excerpt from I²C Specification (Japanese version: rev5.0)) I²C communication generally has the following structure: Start of communication Data Transfer End of communication As an application of this, it is also possible to start the next communication without first ending the last communication ( repeat start ). The data transfer section can transfer data from 1 byte to multiple bytes. The first byte immediately after the start of a transfer is always transferred from the controller to the target, and specifies the target address and the direction of the subsequent data transfer (send or receive) . The I²C specification does not impose any particular restrictions on the number of bytes that can be transferred after the second byte [Figure 7]. When switching between sending and receiving data when communicating with the same target, or when communicating with a different target, start communication again and specify the target address and transfer direction again. スクリーンショット 2025-02-02 16.10.54.png Figure 7: Basic structure of I²C communication 3.2 Data Transfer Unit The basic unit of communication is 9 bits, with 8 bits of data followed by 1 bit. The data is 8 bits, MSB first. The last bit is an acknowledge bit , which is returned in the opposite direction to the data sent to confirm each communication. In I²C, transfers are always made in units of 9 bits [Figure 8]. Data is sent or received one bit per clock. Data changes in sync with the clock. SDA can only change state (from LOW to HIGH or from HIGH to LOW) when SCL is LOW, and remains LOW or HIGH while SCL is HIGH [Figure 9]. スクリーンショット 2025-02-02 16.29.10.png Figure 8: A 1-bit acknowledgement is always returned for every 8-bit data transfer   スクリーンショット 2025-02-02 16.45.18.png Figure 9: SDA signal changes while SCL is LOW 3.3 Bus state: Start and end of transfer The start and end of communication are notified by a start condition and a stop condition , respectively, which mark the end of the transfer. As mentioned earlier, "SDA changes are only allowed when SCL is LOW," but this start/stop condition is an exception. When SCL is HIGH, if SDA changes from HIGH to LOW, this is a start condition. Similarly, when SCL is HIGH, if it changes from LOW to HIGH, this is a stop condition [Figure 10]. スクリーンショット 2025-02-02 17.06.31.png Figure 10: Start and stop conditions The state in which a transfer is in progress after a start condition is called " busy ," and the state in which no transfer is in progress after a stop condition is called " free ." A start condition is initiated in this free state. The controller outputs the start/stop conditions and SCL. The 9-bit transfer following the start condition is used to specify the target address and transfer direction. The data is then transferred in one or more subsequent 9-bit transfers. In addition to the start condition and stop condition, a " repeated start condition " is defined to separate transfers. A start condition begins with the bus in a free state, but a stop condition must be passed before the bus can be put into a free state. If the controller is performing continuous transfers, it can omit issuing this stop condition. A repeated start condition starts the next transfer without going through a free state [Figure 11]. スクリーンショット 2025-02-02 17.21.48.png Figure 11: Repeated Start Condition   A repeated start condition occurs when a start condition is generated without a stop condition in the previous transfer. A repeated start condition is identical to a start condition in terms of functionality. In the following, the start condition will include a repeated start condition unless specifically stated as "repeated start condition." The Repeated Start condition is provided in a multi-controller environment so that one controller can perform multiple transfers in succession while retaining bus ownership. This is because once the bus becomes free, another controller may start a transfer at that timing. By keeping the bus busy without using a Stop condition, the controller can maintain bus ownership. From here on, we will refer to the unit from a (repeat) start condition to a stop condition, or from a (repeat) start condition to the next repeat start condition, as a " transaction " for convenience. 3.4 Transaction Structure A transaction (Figure 12) always begins with a start condition. The data sent from the controller after the start condition specifies the target address and transfer direction. スクリーンショット 2025-02-02 18.25.03.png Figure 12: Example of a basic I2C transfer and waveforms (write transaction example)   The target address is 7 bits of information used to specify the device to communicate with. Communication will occur with the device that matches this address (the I²C specification defines "10-bit addressing" as an option, but since 7-bit addressing is used in most cases, we will not mention this). Following the 7-bit address is a bit specifying the transfer direction ( R/W ). If this bit is "0", it is a write transfer from the controller to the target, and if it is "1", it is a read transfer from the target to the controller. The ninth bit after the seventh bit of the target address and one R/W bit is the acknowledge bit . This bit is a LOW signal returned from the target side. If the device specified by the target address output from the controller exists, the target device will output a LOW to SDA as an acknowledge bit. During this time, the controller outputs a HIGH, so if the target does not exist, SDA will remain HIGH. In other words, if the target exists, the acknowledge bit will be LOW, and if it does not exist, it will be HIGH. When this acknowledge bit is LOW, it is called ACK (acknowledge), and when it is HIGH, it is called NACK (not acknowledge). The target address and transfer direction are output, and if an ACK is returned, data transfer will proceed. If the target does not exist and a NACK is returned, the transaction ends here (the controller issues a stop condition or a repeated start condition). If the data transfer direction is write, the next 8 bits are transferred from the controller to the target, followed by a 1-bit acknowledge bit from the target to the controller. If it is a read transfer, the controller keeps SDA in a HIGH state and reads the 8 bits output from the target in synchronization with SCL. This read transfer also always has an acknowledge bit. The acknowledge bit attached to the data in a read transfer is output by the controller. If the read transfer continues, an ACK is returned, and if the transfer is to be aborted, a NACK is returned. ACK/NACK is important for I²C communication. This is because ACK allows communication to be performed while constantly checking the status of the other party. When a NACK occurs, the communication ends. The conditions under which a NACK occurs are as follows, quoted from the I²C specification: The device specified by the target address does not exist on the bus. The target device is currently performing some processing and is not in a state where it can communicate with the controller, so it cannot send or receive data. The target device does not understand the data or commands received during the transfer During a transfer, the target device cannot receive any more data bytes. In a read transfer, when the controller notifies the target device that the transfer is complete 3.5 Write and Read Transactions The data transfer direction is constant within a single transaction. Therefore, if you write something to a target device and then read from it, consecutive transactions will occur. For example, if you specify a register number for a target device and read from it, an example would be to perform a write transfer followed by a read transfer. In this type of transfer, some target devices require a repeated start condition to separate transactions, while others may not behave as expected with a repeated start condition. This depends on the specifications of the target device, so you must be careful. 4. Reference materials I2C Bus Specification and User Manual (Rev5.0 Japanese version) I2C Bus Specification and User Manual (Rev7.0 English version) NXP Community Blog: I²C Hardware Debugging NXP Community Blog: I3C: The Next Serial Bus NXP Community Blog: SPI Bus Overview Interface March 2024 issue (CQ Publishing) : Special feature "Serial communication from scratch [UART/I2C/SPI with Pico]" Transistor Technology Special No.161 "Measure, Measure, Measure Circuit & Technique Collection" Appendix: "Detailed Explanation of 2-wire Serial Interface I²C" - The above magazine article is an excerpt from this article. First appearance: Transistor Technology, October 2014 issue (CQ Publishing), "Basic Knowledge: Detailed Explanation of 2-Wire Serial Interface I²C," pp. 152-176 Interface Magazine, March 2024 issue (CQ Publishing), " Building I²C & SPI from Scratch ②...I²C Communication Standard," pp. 55-61 ← Updated and reorganized version of the above article. For this blog post, I have excerpted, added to, and revised the section explaining the communication specifications. Change history: 2025-02-03: First Edition 2025-02-04: "4. Added the blog post "I²C Hardware Debugging" to the "Reference Materials" section. March 5, 2025: Section 2.2 Open-Drain Output (Wired-and-Embed) corrected the reference figure number. 2025-11-30: Corrected a typographical error. 2026-04-03: Corrected the original entry. ========================= We are currently unable to respond to comments in the "Comment" section of this post. We apologize for the inconvenience, but when making inquiries, please refer to `` Technical Questions to NXP - How to Contact Us( Japanese Blog) ''. (If you are already an NXP distributor or have a relationship with NXP, you may ask the person in charge directly.) The I²C bus is used for communication between microcontrollers/processors and peripheral devices. Although this serial bus is so commonly used, I would like to take this opportunity to summarize its origins. communication standards Interface Japanese blog
View full article
Are you having trouble implementing AI/ML into your embedded devices? What can NXP's AI/ML solution, eIQ, do for you? (Japanese blog) Introduction Are you having trouble implementing AI/ML into your embedded devices? (From here on, AI/ML will be abbreviated as AI) Although there are ideas for incorporating AI into your company's products, there are likely to be some challenges, such as: ・Challenge 1: "I can't imagine to what extent AI/ML can be achieved with embedded devices." ・Challenge 2: "I don't know where to start." "I'm concerned about the cost of development tools and learning costs." ・Challenge 3: "I developed the AI components on a PC, but I'm worried about whether I can port it to embedded devices." ・Challenge 4: "I'm interested in the recently popular generative AI, LLM, but I'm not sure if it can be realized on embedded devices." In this article, we will introduce the benefits of NXP's AI solution, eIQ, in addressing these anticipated challenges ! What is eIQ? YuseiUegama_1-1742539639294.png  Figure 1: eIQ Overview As shown in Figure 1, the eIQ ® ML software development environment is comprised of the software libraries and AI model development environment required to run AI applications on NXP's MCUs (microcontrollers) and MPUs (processors), and is provided free of charge . Issue 1: "I can't imagine how much AI/ML can be achieved with embedded devices." YuseiUegama_1-1742030219504.png  Figure 2: AI hardware portfolio NXP is a semiconductor vendor with a wide portfolio, ranging from extremely lightweight microcontrollers equipped with the Cortex-M series, a CPU suitable for AI, to processors equipped with the multi-core Cortex-A series, as well as an AI accelerator NPU. YuseiUegama_0-1742539273914.png  Figure 3: Go point / Application Code Hub   Various AI-related demos for various MCUs/MPUs are available at the links below. By checking the details of these demos, you can get an idea of how much AI processing is possible with each grade of MCU/MPU. ・MCU demo Application Code Hub | NXP Semiconductors ・MPU demo GoPoint for i.MX Applications Processors | NXP Semiconductors Additionally, the following page, modelzoo, has published various models converted for NXP devices along with evaluation data. By checking this page, you can get an idea of how much processing time will be required for each type of processing . modelzoo: GitHub - NXP/eiq-model-zoo: A collection of machine learning models for vision optimized for NXP products YuseiUegama_2-1742540889400.png  Figure 4: Model Zoo Issue 2: "I don't know where to start" "I'm concerned about the cost of development tools and learning costs" YuseiUegama_3-1742541820295.png  Figure 5: Model Convert The free eIQ Toolkit allows you to develop AI models using GUI operations from time-series data/image data from sensors you have prepared, without any complicated setup. By combining it with the various sample software mentioned above, you can start developing and evaluating embedded AI without incurring significant learning costs for AI tools. ・Time series model development tool (eIQ Time Series Studio) YuseiUegama_12-1742033241762.png Figure 6: eIQ Time Series Studio Overview           YuseiUegama_11-1742032955712.png Figure 7: eIQ TSS training screen Using eIQ Time Series Studio (TSS), you can develop machine learning models that perform anomaly detection, classification, and regression (prediction) using a GUI. End-to-end development functionality reduces the cost of developing time-series AI models for edge devices. Input values from various sensors can be used as training data, making it useful for introducing AI to a variety of devices, as shown below. YuseiUegama_13-1742033263716.png  Figure 8: eIQ Time Series Studio usage example Click here for "eIQ Time Series Studio (time series model development tool) Overview and Usage " ・Image processing model development tool (eIQ Portal) YuseiUegama_2-1742030234032.png  Figure 9: eIQ image processing model development function Using the image processing model development function of eIQ Toolkit, you can develop deep learning-based object detection/image classification models using a GUI.It offers a complete set of functions, including an augmentation function that augments the training data by processing images, training with specified hyperparameters, exporting in a state optimized for NXP MCU/MPU, and testing the developed model.   YuseiUegama_7-1742031366382.png Figure 10: Overview of eIQ Model Water Marking Technology Additionally, the eIQ model watermarking technology function helps protect your models by providing a way to prove whether your image processing models have been illegally copied. For details, please refer to the link below and the eIQ_Toolkit_UG.pdf included in the eIQ Toolkit. eIQ ® Model Watermark Technology | NXP Semiconductors   Issue 3: "I developed the AI components on a PC, but I'm worried about whether I can port it to embedded devices." ・eIQ Portal Model Convert function   YuseiUegama_0-1743064095765.png   Figure 11: eIQ Convert function overview   eIQ not only has a model development function, but also has a function to optimize users' own models for NXP MCUs/MPUs. During conversion, it is possible to specify options such as quantization format and per channel/per tensor, and it is configured so that assets built in a PC or rich SoC- based evaluation environment can be smoothly reused for NXP 's MCUs/MPUs suitable for embedded use in product development. ・Nvidia TAO Tool Extension   YuseiUegama_6-1742031229248.png Figure 12: Nvidia Tao Toolkit Extension Overview   NXP is the first semiconductor vendor to directly integrate the NVIDIA TAO Toolkit API into its eIQ machine learning development environment, an AI enablement tool, enabling the deployment of NVIDIA pre-trained AI models on NXP edge processing devices. For details, please refer to the article below and the eIQ_Toolkit_UG.pdf included in the eIQ Toolkit. NXP Collaborates with NVIDIA to Accelerate AI Adoption by Making TAO Toolkit Available on NXP Edge Devices | NXP Semiconductors Issue 4: "I'm interested in the recently popular generative AI, LLM, but I'm not sure if it can be realized on embedded devices." ・LLM Solutions/GenAI Flow (Pre-release)   YuseiUegama_4-1742030425113.png Figure 13: LLM Pipeline NXP is one of the industry's first companies to offer an embedded generative AI/LLM solution called Gen AI Flow. For detailed implementation instructions, please refer to the article " [Getting Started] i.MX 95: LLM_RAG Implementation Hands-on - eIQ Gen AI Flow - ". ------- [Added 4/7/2025] The first revision of eIQ genAI Flow was released in the BSP update for Q1 2025. Please see below for details. GitHub - nxp-appcodehub/dm-eiq-genai-flow-demonstrator: The eIQ GenAI Flow Demonstrator is a Conversational AI Pipeline application designed for NXP i.MX95 devices. ------ This can be achieved by providing an environment incorporating RAG (Figure 14), providing an environment that combines sufficient practicality and security for embedded devices.   YuseiUegama_14-1742034605915.png Figure 14: RAG Overview   *LLM: Large Language Model *RAG: Retrieval Augmented Generation LLM support enables embedded devices to provide more intuitive, conversational user experiences, from smart home devices that support voice commands to industrial equipment that can be controlled with natural language, to in-vehicle infotainment systems that allow users to command and operate in-vehicle functions through hands-free, two-way conversation. Please also refer to the following white papers: https://www.nxp.jp/webapp/Download?colCode=GEN-AI-RAG-WHITEPAPER   summary NXP's eIQ provides the industry's highest level of functionality required for edge AI development, as shown below, reducing customers' AI implementation and development costs. ・We provide a free environment for developing time-series AI and image processing models using a GUI. - Model conversion function and collaboration with NvidiaTool allow for smooth migration from evaluation environments such as PCs ・By utilizing GenAI Flow , you can respond to the latest trend , generative AI (LLM) . ----- -This article is based on information current as of the time of writing (September 25, 2025). ========================= We are currently unable to respond to comments in the "Comment" section of this post. We apologize for the inconvenience, but when making inquiries, please refer to `` Technical Questions to NXP - How to Contact Us( Japanese Blog) ''. (If you are already an NXP distributor or have a relationship with NXP, you may ask the person in charge directly.) We will introduce the benefits of using NXP's AI/ML solution eIQ to address the challenges of introducing AI/ML to embedded devices. - Plan to release LLM+RAG solution -Developed time series AI and image processing AI models -Convert function allows smooth migration of existing AI/ML assets i.MX RT Processors i.MX Processors introduction MCX SW | Downloads Technology Focus Japanese blog
View full article
开源漏洞和商业使用文档查询 队员们好 我们的客户审查了 MCAL 代码(RTD 3.0.0P01)为该项目使用名为 Black Duck 的开源验证工具。结果,他们发现了 MCAL 中的一些似乎使用开源元器件的文件,如所附文件所示。 有人能对此发表评论吗?有报告吗? 据我所知,RTD 采用的是恩智浦专有许可证,没有开放源码软件许可证。 顺祝商祺! 丹尼尔 RTD Re: Open-Source Vulnerabilities and Commercial Usage Documentation Inquiry @danielmartynek 开发团队回复: 我检查了恩智浦社区网站上添加的文件,其中还有一些条目需要确认。也就是说,客户确实使用BlackDuck工具扫描了版本代码包,并生成了调查结果报告。 BlackDuck 工具能找到与我们现有代码和可能公开的代码相匹配的代码片段。这并不意味着任何匹配都是真实的,也不意味着代码是以某种方式窃取的。因此,该工具需要实际人员来分析结果,并根据需要确认或忽略结果。 在 RTD 中,我们很少使用开放源代码,除非有绝对必要,而且在使用时,我们一定会明确说明,并确保其符合恩智浦的许可证。   当 S32K3 RTD 3.0.0P01 版本于 2023 年 3 月 31 日,我们仍在使用 BlackDuck Protex,这是同一家供应商的旧工具,但搜索能力不如新工具。当时我们提交了一份 SCR 报告,其中列出了所有包含的元器件(附在本电子邮件中)。 附上 SCR 文件(SBOM 格式的前身,已在安装程序旁边提供)。它提到了所使用的元器件和许可证。如果调查仍在继续,我们将需要获取该版本并再次对其进行扫描,但要使用新的BlackDuck工具并为其提供新的报告(本质上是重做发布时已经完成的工作——扫描代码,提取每行代码,看看是否有任何问题)。
View full article
RW612ローミング設定 親愛なるコミュニティの皆さん、ローミング設定についていくつか質問があります。私はwifi-wpa-supplicantの例を実行しており、ネットワークに接続しているときにローミング(wlan_set_roaming(1、70))を有効にしています。rssiが70を下回り、バックグラウンドスキャンの代わりに通常のスキャンを開始すると、低rssiイベントがトリガーされることに気付きました。ただし、wpa_supplicantを無効にすると、通常のスキャンではなくバックグラウンドスキャンが実行されます。なぜ違いがあるのですか? WPA_supplicantバックグラウンドスキャン(CONFIG_BGSCAN)をサポートしていますが、それ(bgscan.c)は、サンプルプログラムから削除されたように見えます。これには何か理由がありますか? 私の現在の設定では、RSSIが特定のしきい値を下回ったときにのみローミングが開始されます。より強力なアクセスポイントを検出したときにローミングを開始するようにスケジュールスキャンを設定するにはどうすればよいですか? 多くの感謝と敬意 日時:RW612ローミング設定 SDK のバージョンは 24_12_00 です
View full article
如何构建示例项目的版本 — S32K1 AUTOSAR 您好,NXP团队, 我目前正在使用 S32K1 AUTOSAR RTD 2.0.0 示例项目。 我创建了一个 GPIO_DIO_LP_example_s32K118 项目并成功构建了 Debug_Flash 版本 。 不过,该示例项目默认情况下似乎只支持在调试模式下构建。 你能告诉我如何配置项目来构建发布版本吗? 感谢您的支持! Re: How to Build Release Version of Example Project – S32K1 AUTOSAR 你好,彼得斯 谢谢您的建议。 Re: How to Build Release Version of Example Project – S32K1 AUTOSAR 您好, 你可以进入项目的属性并添加新的版本配置 PetrS_0-1753267132040.png 输入新名称并从现有调试配置中复制 PetrS_4-1753267328511.png 最后删除调试标记 PetrS_3-1753267260950.png 然后应用并版本 BR, Petr
View full article
S32K358 HSE 固件不稳定 您好, 我们在安全启动配置方面遇到了问题。 1.将 BOOT_SEQ 设置为 1 后,0x400000 处的值为 1,FSR 正常报告 0x0B600000 HaiHoangSoftware_0-1753257384760.png HaiHoangSoftware_1-1753257440958.png 2。安装 SMR 并 RESET 后,我附上了调试器和 BOOT_SEQ 返回 0 和 FSR 报告 0x00000000 这是异常 HaiHoangSoftware_2-1753258163407.png HaiHoangSoftware_3-1753258222524.png 我执行脚本是为了进行 HSE 握手并 RESET 目标板 2/3 次,FSR 值为 0x0f600000 这很正常。 这意味着 HSE 仍然存在,并在工作,但不稳定 有什么原因吗? Re: S32K358 HSE firmware unstable 我发现在配置SMR之后,必须使用功能RESET而不是破坏性RESET。更改为功能 RESET 后,HSE 固件运行良好。 我们可以结束这个话题了。 https://community.nxp.com/t5/S32K/s32k3-hse-basic-secure-boot-protect-problem/m-p/1943667 HaiHoangSoftware_0-1753954706382.png Re: S32K358 HSE firmware unstable 感谢您对我的支持。 Re: S32K358 HSE firmware unstable 您能否与分配给您的恩智浦 FAE 讨论这个问题?或在此创建新票据: https://support.nxp.com/s/?language=en_US ......并将其转发给他们。谢谢。 Re: S32K358 HSE firmware unstable 您好, 我们的应用程序不会将 BOOT_SEQ 改为 0。 我们确实在多个板上进行了测试,但只有 1/2 个板出现了这个问题。 下面是 GPR 寄存器的值 HaiHoangSoftware_0-1753426558530.png GSR 值为 0 HaiHoangSoftware_1-1753426610399.png Re: S32K358 HSE firmware unstable 你好@HaiHoangSoftware 如果即使在 RESET 后大约 1 秒后,FSR 寄存器仍保持 0x00000000,则表示 HSE 固件根本没有启动。在 GSR 注册表中可以看到什么?是否设置了第 0 位?在 HSE GPR 寄存器 0x4039_C028 中可以看到什么? HSE FW 或 SBAF 不应该这样做。你的申请不是改变了这一点吗? 问候, Lukas
View full article
IMX8QM 未使用的电源和信号绑带 您好, 我们正在为 IMX8QM 处理器设计定制板。本项目中有一些未使用的硬件模块,如 HDMI、LVDS、MIPI-CSI、MIPI-DSI、PCIe 等。我们要确保未使用的电源和信号绑扎。 例如,根据 IMX8HWDG 表 47,如果不使用HDMI-RX,下面给出的电源引脚必须接地。 VDD_HDMI_RX0_1P8 ---> GND VDD_HDMI_RX0_LDO0_1P0_CAP ---> GND VDD_HDMI_RX0_LDO1_1P0_CAP ---> GND vdd_hdmi_rx0_vh_rx_3p3 ---> gnd 查看表 48,如果不使用 HDMI-RX,信号引脚的连接方式如下: HDMI_RX0_ARC_P/N ---> 保持未连接状态 HDMI_RX0_CEC ---> 保持未连接状态 HDMI_RX0_HPD ---> 保持未连接状态 HDMI_RX0_MON_5V ---> 不连接 HDMI_RX0_CLK_P/N ---> GND HDMI_RX0_DATAx_P/N ---> GND HDMI_RX0_REXT ---> GND HDMI-RX 块没有问题。 不过,LVDS和 MIPI-CSI 或 MIPI-DSI 块有些令人困惑。根据表 47,LVDS电源引脚必须用 10kΩ 电阻器连接至 GND。 VDD_LVDS0_1P0 ---> 10 kΩ 至地面 VDD_LVDS0_1P8 ---> 10 kΩ 至地面 VDD_LVDS1_1P0 ---> 10 kΩ 至地面 VDD_LVDS1_1P8 ---> 10 kΩ 至地面 在硬件设计指南第 78 页中有一项关于对地 10 kΩ 建议的说明: 所有球可作为一组通过一个 10 kΩ 电阻器连接并拉低至地,或作为多组(根据球图位置)通过多个 10 kΩ 电阻器连接并拉低至地。如果相关电源没有供电,信号球可以不连接。 问题 1:根据上述解释,我们将 VDD_LVDS0_1P0(球 AV36)和 VDD_LVDS1_1P0(球 AW35)短路,并只用一个 10k 电阻与地相连。数据表显示,这些电源引脚属于第 1 组(同一组)。这样做安全吗?我在下面附上了一张图片。 image.png 表 48 中另有 LVDS 块未使用信号引脚的说明: 所有球可作为一组通过一个 10 kΩ 电阻器连接并拉低至地,或作为多组(根据球图位置)通过多个 10 kΩ 电阻器连接并拉低至地。此解决方案仅在与每个 I/O 组关联的所有功率域均已断开或接地时才适用。如果某些功能域仍处于供电状态,则落入这些功能域的未使用的 I/O 必须保持浮空或单独接地,每个信号都通过自己的 10kΩ 电阻器。 未使用的电源引脚中指出,对于 LVDS,未使用的无电源硬件模块信号引脚可以不连接。但上面的说明没有提到在不提供电源的情况下不连接信号引脚的任何信息。 问题 2:如果我们将 LVDS 电源引脚 10K 与地相连,不连接 LVDS 信号引脚是否安全?我在下面附上了一张图片。 ibocakir_06_0-1753262512046.png 问题 3:我只举了一个 LVDS 的例子。我可以将这些线路应用于 MIPI-CSI 和 MIPI-DSI 块吗? 需要您帮助完成该项目的硬件设计。 先行致谢。 易卜拉欣 i.MX8 i.MX 8 系列 | i.MX 8QuadMax (8QM) | 8QuadPlus Re: IMX8QM Unused Power and Signal Strapping 感谢您的答复。我们将像下面这样布线: ibocakir_06_0-1754221515993.png 要为每条线路布线并为每组线路放置一个电阻器是很困难的。无论如何,哪种方法更安全,我们都必须这样做。 再次感谢。 易卜拉欣 Re: IMX8QM Unused Power and Signal Strapping 你好 1.是的,它是安全的。 2.不需要,每个组或信号都需要用一个 10k 电阻器连接到地。 3.是的,LVDS 和 MIPI 信号的指导原则类似。 顺祝商祺!
View full article
如何在 MCUXpresso IDE 中切换 C/C++ 库 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> MCUXpresso IDE 支持三个 C/C++ 库:Newlib、NewlibNano 和 Redlib。Newlib 是一个标准的 GNU C/C++ LIB,包含全面的功能。NewlibNano 在 Newlib 的尺寸上进行了优化。而且 Redlib 提供的应用程序要小得多,它不是 GUN C 库。 MCUXpresso SDK 演示默认使用 Redlib,一些客户希望切换库以平衡代码大小和功能。 特别是对于小内存嵌入式芯片,推荐使用Redlib。 本文档主要包含两部分内容: 一、 MCUXpresso IDE中使用的不同C/C++库 二. MCUXpresso IDE 中的 Switch C 库 有关详细信息,您还可以参考 。
View full article
AUT-N1798 統合型 MagniV ソリューションによるアプリケーションの小型化 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> シングルダイ・ソリューションを備えた統合型ミックスド・シグナル・マイクロコントローラにより、システム設計を簡素化し、市場投入までの時間を短縮します。この講義では、NXP MagniVポートフォリオの概要を説明し、アプリケーションを縮小するためのソリューションを提供します。 ビデオプレゼンテーションを見る <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> シングルダイ・ソリューションを備えた統合型ミックスド・シグナル・マイクロコントローラにより、システム設計を簡素化し、市場投入までの時間を短縮します。この講義では、NXP MagniVポートフォリオの概要を説明し、アプリケーションを縮小するためのソリューションを提供します。 ビデオプレゼンテーションを見る
View full article
[技術ノート] i.MX RT1170 JEDEC互換性 この記事ではi.MXRT1170を例に挙げていますが、ルールはi.MX RTシリーズにも適用されます。 1. 背景と質問 データシート(例:RT1170A、RT1170B)には 'NON JEDEC' パッケージが以下のように示されていますが、製品品質ページ(例:MIMXRT1172AVM8A)では WSL 3 (Moisture Sensitivity Level 3)としてマークされており、これはJEDEC-STD-020で定義された湿度感度レベルの1つです。 矛盾はあるのでしょうか? 製品はJEDEC-STD-020に準拠していますか? Sam_Gao_0-1760344672941.png Sam_Gao_1-1760344940289.png 2. JEDEC-STD-020とは何ですか? JEDEC-STD-020は、リフローはんだ付け工程中の表面実装デバイス(SMD)における湿度感度レベル(MSL)および事前条件要求事項を定義した規格です。 この規格に準拠しているということは、リフローはんだ付け前のデバイスの保管および取り扱いが業界仕様に適合しており、自動化製造環境での使用に適していることを意味します。 3. WSL 3およびJEDEC-STD-020準拠 NXPの製品品質ページでは、一部のi.MX RT1170バリアントがWSL 3(Moisture Sensitivity Level 3)としてマークされており、これはJEDEC-STD-020で定義された湿度感度レベルの1つです。これは次のことを意味します。 デバイスはリフローはんだ付け前に168時間まで周囲環境にさらすことができます。 また、乾燥梱包で保管する必要があります。 JEDEC-STD-020の取り扱いおよび処理要件に準拠しています。 これは、i.MX RT1170シリーズがJEDEC-STD-020に従ってテストおよび認定されていることを示しています。NXP製品ページからの主なパラメータ: MSL(吸湿感度レベル):3 ピークパッケージ本体温度:260°C ピーク時の時間:40秒 4. データシートにおける「NON JEDEC」パッケージ i.MX RT1170データシートでは、一部のパッケージタイプが「NON JEDEC」とラベル付けされており、通常は以下を意味します。 パッケージの寸法やレイアウトがJEDEC標準のアウトラインに厳密には従っていない デバイスが正式なJEDEC-STD-020認証プロセスを経ていない 例えば、IMXRT1170BCEC Rev.1データシートでは以下のように記載されています。 パッケージ情報:プラスチックパッケージ 289ピン MAPBGA、14 x 14 mm、0.8 mmピッチ パッケージタイプ:NON JEDEC [1] これはパッケージがJEDEC標準の機械的アウトラインではないことを示しています。ただし、必ずしもデバイスがJEDEC-STD-020で定義された湿度感度要件を満たしていないことを意味するわけではありません。 5. まとめ 「NON JEDEC」は機械的形状のみを指し、信頼性規格には関係ありません。 データシート上の「NON JEDEC」の表示は物理的なパッケージアウトラインを指しており、製品品質ページのMSL 3評価は、JEDECの試験方法に基づいて決定された信頼性および取り扱い仕様を示しています。 JEDEC-STD-020は非密閉型表面実装デバイスにおける湿度感度レベルの試験規格です。i.MX RTは、MSL評価がJEDEC-STD-020の試験プロセスに基づいていることを明確に示しています。 パッケージがJEDEC標準(例えばMO-220)に準拠しているかどうかは、JEDEC-STD-020で試験可能かどうかに直接関係しません。 ‘NON JEDEC’是指物理封装中的机械形式,不是可靠性标准。 JEDEC-STD-020 是针对非气密性表面贴装器件的湿敏等级测试标准; NXP 明确表示i.MX RT产品 MSL 等级是依据 JEDEC-STD-020 测试流程; 封装是否为 JEDEC 标准(如 MO-220)与是否能进行 JEDEC-STD-020 测试无直接关系。 6. 参考資料 NXP i.MX RT1170製品ページ: https://www.nxp.com/part/MIMXRT1172AVM8A  i.MX RT1170 データシート: https://www.nxp.com/docs/en/data-sheet/IMXRT1170CEC.pdf JEDEC-STD-020規格: https://www.jedec.org/document_search/field_doc_type/151?search_api_views_fulltext=%E2%80%8BJ-STD-020&order=title&sort=asc     
View full article
安装 Zephyr SDK 版本 Zephyr SDK 是一套用于构建 Zephyr 应用程序的构建工具。它包含 GCC 和 CMake,并且每个 Zephyr 版本都与特定的 Zephyr SDK 版本相关联。此版本已在 Zephyr 存储库的 SDK_VERSION 文件中注明。使用推荐的 Zephyr SDK 版本非常重要——版本不匹配可能导致构建错误。 例如,Zephyr v4.1指定Zephyr SDK v0.17.0。如果在 Zephyr v4.1 中使用 Zephyr SDK v0.17.2(用于 Zephyr v4.2),会遇到版本错误。如果您需要为 Zephyr v4.1 版本应用程序,请安装Zephyr SDK v0.17.0。 您可以安装多个 Zephyr SDK 版本,并在构建时进行切换(请参阅下方说明)。 完整安装与最小安装。 完全安装:包括每个支持的 SoC 架构的所有工具链。建议初学者使用,但需要更多磁盘空间和下载时间。 最小安装:允许您仅选择所需的工具链。节省空间和时间。 对于最小化安装,运行 setup.cmd 脚本选择要安装的工具。在恩智浦板上,选择: 注册 Zephyr SDK CMake 软件包 安装主机工具 aarch64-zephyr-elf (64 位 ARM) arm-zephyr-eabi (32 位 ARM,包括 NXP 微控制器) 可选 xtensa-nxp… (Cadence Tensilica DSP 内核) 安装 Zephyr SDK 这些步骤包括使用 MCUXpresso 安装程序安装 Zephyr SDK、从 CLI 安装 West 或手动下载。 使用 MCUXpresso 安装程序进行安装 MCUXpresso 安装程序从 Zephyr v4.2 开始支持 Zephyr 软件包。每个软件包都会安装相应的 Zephyr SDK 版本(例如,v4.2 软件包会安装 SDK v0.17.2)。此选项安装了面向恩智浦开发的最小工具集。 dereksnell_0-1763125437139.png MCUXpresso 安装程序不支持更早版本的 Zephyr SDK。对于 v0.17.1 或更早版本,请使用 West 或手动安装。 使用 West CLI 进行安装 Zephyr 项目已将 Zephyr SDK 安装添加到 West。 对于命令行界面 (CLI),请激活Python 虚拟环境,然后运行: west sdk install --version 0.17.0   如果省略 --version ,West 将使用 Zephyr 仓库的 SDK_VERSION 文件中的版本。 默认情况下,安装完整软件包。如需最小化,请添加 -i 。 通过手动下载安装 从 https://github.com/zephyrproject-rtos/sdk-ng/releases 下载 Zephyr SDK。 请根据您的主机操作系统选择完整版或精简版。 解压到您的用户文件夹(West 和 MCUXpresso 的默认位置): Windows: C:\Users\ \zephyr-sdk-0.17.0 Ubuntu: /home/ /zephyr-sdk-0.17.0 选择 Zephyr SDK 版本 多个 Zephyr SDK 版本可以共存。West 默认使用最新版本,但你可以将其覆盖: VS Code:导入示例时,在向导中选择 Zephyr SDK 版本。 dereksnell_1-1763126099481.png CLI:在构建前设置环境变量 ZEPHYR_SDK_INSTALL_DIR 。此命令在 Ubuntu 中设置该变量: 导出 ZEPHYR_SDK_INSTALL_DIR="/home/ /zephyr-sdk-0.17.0" 或者在 Windows 中: set ZEPHYR_SDK_INSTALL_DIR= C:\Users\ \ zephyr-sdk-0.17.0   返回 Zephyr 知识中心    
View full article
GD31xx Altium and Cadence models The attached GD3100 and GD3160 models may be used by customers in developing their schematic and PCB layout.
View full article
MIIT (China) sharpened Homologation on FRDM-KW38 & KW36 The homologation requirements in China (MIIT [2002]353) obviously are planned (end of December 2022) to be sharpened (MIIT publication from 2021-01-27: “Notice on Matters Related to Radio Management in the 2400MHz, 5100MHz and 5800MHz Bands”). A modification register is need on the KW38 and KW36 to pass the new Chinese  requirement with acceptable margin: PA_RAMP_SEL value must be set to 0x02h (2us) instead of 0x01h (1us default value) Modification SW: XCVR_TX_DIG_PA_CTRL_PA_RAMP_SEL(2) in the nxp_xcvr_common_config.c All the details are in the attached file. Note: This SW modification is for China country only. BLE Software KW KW35 | 36
View full article
i.MX RT1170 DVFS Demo Dynamic voltage and frequency scaling (DVFS) is a power management technique that allows dynamically reducing power consumption of a CPU by dynamically scaling down supply voltage and CPU frequency. Because the internal DCDC of the i.MX RT1170 cannot cover the needed maximum current requirement at the junction temperature of 125 °C, the DVFS technique can be used to reduce current drain for compatibility with the internal DCDC. Lowering the processor frequency dynamically can help reduce the chip input current demand and ensure that the chip can continue to work at the junction temperature of 125 °C. The demo is attached. Only IAR and armgcc versions are enabled. The corresponding Application Note can be downloaded in the below link. https://www.nxp.com/docs/en/application-note/AN13267.pdf
View full article
EIQ Software Application based on OpenCV Neural Network Framework on Layerscape Platforms NXP created eIQ machine learning software for QorIQ Layerscape applications processors, a set of ML tools which allows developing and deploying ML applications on the QorIQ Layerscape family of devices. OpenCV is an open-source computer vision library. It offers a unitary solution for both the neural network inference (DNN module) and the standard machine learning algorithms (ML module). It includes many computer vision functions, making it easier to build complex machine learning applications in a short amount of time and without being dependent on other libraries. This document describe applications YOLO object detection, Image segmentation, Image colorization, Image classification, Human pose estimation and Text detection developed based on OpenCV DNN framework.
View full article
i.MX RT1170 DVFS デモ ダイナミック電圧および周波数スケーリング(DVFS)は、電源電圧とCPU周波数を動的にスケールダウンすることで、CPUの消費電力を動的に削減できる電力管理手法です。i.MX RT1170の内部DCDCは、125°Cの接合部温度で必要な最大電流要件をカバーできないため、DVFS技術を使用して電流ドレインを低減し、内部DCDCとの互換性を確保できます。プロセッサの周波数を動的に下げると、チップの入力電流需要を減らし、チップが125°Cの接合部温度で動作し続けることができます。 デモが添付されています。IAR と armgcc のバージョンのみが有効になります。 対応するアプリケーションノートは、以下のリンクからダウンロードできます。 https://www.nxp.com/docs/en/application-note/AN13267.pdf
View full article
NFC ON KW In the process of practical application, customers often need the combination of ble + NFC. At present, our IOT-DK006 is the only development board with NFC module. But the NFC example is not perfect. So we porting the library of NFC reader- PN7150, to support KW series microcomputer so that KW series can handle the demand of ble + NFC function. Now I will introduce you how to port the NFC lib to KW. 1 PN7150 Introduction PN7150 is the high-performance version of PN7120, the plug’n play NFC solution for easy integration into any OS environment, reducing Bill of Material (BOM) size and cost. PN71xx controllers are ideal for home-automation applications such as gateways and work seamlessly with NFC connected tags. nxf56274_0-1622614472750.png 2 Tools hardware:FRDM-KW36,PN7150 , some wire software:mcuxpresso11.3 package:NXP-NCI MCUXpresso example Project This package contains the nfc library and example that we need. We will refer the ‘NXPNCI-K64F_example’ firstly. Sdk version: 2.2.8, Example: frdmkw36_rtos_examples_freertos_i2c  3 Steps Hardware part:We need connect the PN7150 to KW36 like the picture. Although we can connect the PN7150 to board through the ardunio connector, the pin’s voltage is not enough to drive the PN7150. So we need a wire connected to U1 to get 3.3V.   PN7150 FRDM-KW36 VBAT/PVDD 3.3V VANT 5V GND GND IRQ PTA16 VEN PTC15 SCL PTB0,I2C0 SDA PTB1,I2C0 nxf56274_1-1622614472876.jpeg Software part:We should add the nfc library and directory into our project. You can check the following picture to know what file is necessary. If you want to know how to add directory into our project, you can refer this link. The red line shows what file we need. nxf56274_2-1622614472948.png Please notice that when we add file path into the mcuxpresso configuration, we also need add the path into ‘Path and Symbols’ . nxf56274_3-1622614473031.png We need add some macro into ‘Preprocessor’. nxf56274_4-1622614473134.png We copy the NXPNCI-K64F_example’s main file content into our ‘freertos_i2c.c’. Next, we need modify the file pin_mux.c, tml.c and board.h   In file board.h,add the following macro. Don't forget to enable the pin clock. /* NXPNCI NFC related declaration */ #define BOARD_NXPNCI_I2C_INSTANCE I2C0 #define BOARD_NXPNCI_I2C_BAUDRATE (100000) #define BOARD_NXPNCI_I2C_ADDR       (0x28) #define BOARD_NXPNCI_IRQ_PORTIRQn PORTA_IRQn #define BOARD_NXPNCI_IRQ_GPIO     (GPIOA) #define BOARD_NXPNCI_IRQ_PORT     (PORTA) #define BOARD_NXPNCI_IRQ_PIN      (16U) #define BOARD_NXPNCI_VEN_GPIO     (GPIOC) #define BOARD_NXPNCI_VEN_PORT     (PORTC) #define NXPNCI_VEN_PIN            (5U)     In file pin_mux.c, add head file ‘board.h’. Add the following code in function ’ BOARD_InitPins’. The step is to configure the VEN, IRQ and I2C0. This example contains the I2C1’s code, you can comment them.     /* Initialize NXPNCI GPIO pins below */   /* IRQ and VEN PIN_MUX Configuration */   PORT_SetPinMux(BOARD_NXPNCI_IRQ_PORT, BOARD_NXPNCI_IRQ_PIN, kPORT_MuxAsGpio);   PORT_SetPinMux(BOARD_NXPNCI_VEN_PORT, NXPNCI_VEN_PIN, kPORT_MuxAsGpio);   /* IRQ interrupt Configuration */   NVIC_SetPriority(BOARD_NXPNCI_IRQ_PORTIRQn, 6);   EnableIRQ(BOARD_NXPNCI_IRQ_PORTIRQn);   PORT_SetPinInterruptConfig(BOARD_NXPNCI_IRQ_PORT, BOARD_NXPNCI_IRQ_PIN, kPORT_InterruptRisingEdge); Finally, in file tml.c, modify PORTC_IRQHandler as PORTA_IRQHandler We finished all steps. 4 Results We use ntag to test the reading and writing operation. nxf56274_5-1622614473191.jpeg When the tag is closed to the PN7150, we will get the following message. nxf56274_6-1622614473213.png The text recording is ‘VER=03’. Next, we will modify the text recording We need add the new macro to preprocessor. nxf56274_7-1622614473283.png We can modify the variable NDEF_MESSAGE in function task_nfc_reader to modify the text recording. nxf56274_8-1622614473309.png Then we download the program again. We will see the original text ‘VER=03’ and the text has been modified. Then we read the tag again. We will see the new text. nxf56274_9-1622614473339.png If we want to send the larger text, what should we do? We need modify the macro ‘ADD’. When only 4 characters are sent, ‘ADD’ is 0. And every additional character is added, the ‘ADD’ will add. We modify the tag as ‘Ver=03’, and we have two more characters. So ‘ADD’ needs to be defined as 2 nxf56274_10-1622614473363.png It firstly shows the text ‘Test’. Then it will show the new text ‘Ver=03’. nxf56274_11-1622614473396.png Other tags’ reading and writing operation can be enabled by defining some macro.       BLE Software KW
View full article
尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7) 最近有客户问到如何移植PE生成的TSI代码到IAR中,按照常规的方法在把头文件和库文件意义一一包含进来,非常繁琐,于是研究了一下相关的操作。在早期的IAR版本中,需要用户自己手动添加芯片名称,链接文件和包含的路径信息,特别是在PE增加或者删除组件后,需要用户去增减相应的文件,更增加了难度。而在最新版本的 IAR 6.7中集成了对PE工程的链接机制,它可以方便的读取PE工程的XML文件,从而实现移植PE生成的代码到 IAR Embedded Workbench中,相对于早期的IAR版本,主要完成以下几个工作: 自动检测使用的芯片类型; 自动添加PE的LCF连接配置文件; 自动更新包含的头文件路径; PE增加或者删除Component组件后,IAR工程会自动Add 或Delete 相应的组件代码; 尽管IAR完成了一些繁琐的工作,但网上没有太多的资源可以参考,对于首次使用的用户来说还是需要一些探索,为节省大家的时间,下面以一个具体的示例Step By Step的介绍如何在IAR中集成PE的工程。 1. 打开Processor Expert software 新建一个PE的工程并保存生成代码,这个过程比较简单,此处不再赘述,重点讲述一下在IAR中的使用步骤; 2. 在IAR Workbench中"Creat New Project"新建一个空的工程。 3. 保存新建的工程文件到PE工程的文件夹中,需要注意的是此处也可以选择其他路径,但为简便和易维护性上还是建议直接存放到PE工程中。 4. 打开Tools->Options->Project选项,勾选“Enable project connects”,这个选项的目的在于使能 IAR 能够读取Freescale Processor Expert和Infineon DAVE等第三方工具生成.XML文件。 5. 添加PE工程的XML文件,选择Project->Add Project Connection,会弹出链接选择对话框,选择使用Freescale Processor Expert,默认是IAR Project Connection; 6. 点击OK后,选择建立PE工程时生成的工程描述符文件Projectinfo.xml; 7. 完成上面步骤后,在IAR中自动完成以下三方面工作:自动加载PE生成的文件到IAR中,自动安装LCF链接配置文件,自动包含头文件路径。这几个步骤在之前版本的IAR中需要自己手动添加,并且当在PE中重新生成Code时需要重新添加对应的文件; 8. 完成上面步骤之后,需要根据实际情况配置采用的下载/调试器,Project->Options->Debugger->Setup 选择下载Driver,实验中使用的是KL25的FRDM板,所以在PE Macro中选择OpenSDA,点击OK,完成设置; 9. 编译工程,下载Debug; 总结下来,主要完成两个工作:(1)配置使能 Project connection,并导入PE生成的XML文件; (2)配置调试的下载器仿真器; Re: 尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to Integration Processor Expert code to IAR6.7) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 问题可以在下面回复: 当您在“Libraries(-l)”中添加一个库时,gcc 链接器知道这是一个 gcc 库,因此无需添加“lib”前缀和“.a”后缀。 但是当您在“杂项”中添加库时,如果文件没有“lib”前缀和“.a”后缀,gcc 链接器就不会认为它是 gcc 库。 Re: 尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7) 我看了一下.xml配置文件,上面显示的库的路径是在工程文件夹下面的,实际上在Open Containing Folder命令中打开的路径也是工程所在的路径,但是并不是库的路径,是他的上级路径,应该是他没有识别到。 你说的那个选项我勾选了(atuo runtime library selection),仍然不行,但是我在选项下面的Additional libraries 中添加了库的路径之后就可以了。 第二个方法就是上面我说的方法,取消链接之后自己添加一遍库,我注意到自动添加的库是带引号的,自己添加的不带引号,不知道这意味着什么。。 下面是XML的路径片段,路径中没有中文     D:\PE_K60\TEST1.0\Project_Settings\Linker_Files\ProcessorExpert.icf           D:\PE_K60\TEST1.0\Sources\TSS\       C:\Freescale\PExDrv v10.3\eclipse\ProcessorExpert\lib\Kinetis\iofiles\       C:\Freescale\PExDrv v10.3\eclipse\ProcessorExpert\lib\Kinetis\pdd\inc\       D:\PE_K60\TEST1.0\Sources\       D:\PE_K60\TEST1.0\Generated_Code\               D:\PE_K60\TEST1.0\Generated_Code\       D:\PE_K60\TEST1.0\Sources\       D:\PE_K60\TEST1.0\Sources\TSS\               D:\PE_K60\TEST1.0\Sources\TSS\       Re: 尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7) 你要查看一下PathName 的路径了,因为默认的路径应该是在TSS的安装目录中,另外在IAR中Linker配置项的library选项配置也需要check一下,需要使能atuo runtime library selection。 Re: 尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to integrate Processor Expert code to IAR6.7) 您好! 我按照你的文章使用PE建立了一个关于TSS库的工程,使用IAR编译文件时出现了错误: Error[Li005]: no definition for "TSS_Init" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o] Error[Li005]: no definition for "TSS_SetKeypadConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o] Error[Li005]: no definition for "TSS_SetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS1.o] Error[Li005]: no definition for "TSS_GetSystemConfig" [referenced from D:\PE_K60\test1\Debug\Obj\TSS_SensorTSI.o] Error while running Linker 我找到错误的原因是:在 文件中       "TSS_KXX_M4.a"     上述路径在IAR中识别为无效路径,导致库中的函数无法引用, 我在IAR加载文件之后,在你说的地4步《打开Tools->Options->Project选项,勾选“Enable project connects” 》中取消了工程链接,删除了IAR工程中包含的TSS_KXX_M4.a文件,然后重新加载了这个文件,这时候编译通过了。 请问这个应该怎么做呢。 我使用的是IAR6.7.1,PE10.3 Re: 尝鲜IAR 6.7集成Processor Expert工程代码功能(The Step to Integration Processor Expert code to IAR6.7) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 好文档,对我很有用!谢谢!
View full article