Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
S32K3 FLEXIO数据异常 我在使用S32K314 RTD400的SAI0(主机)与FLEXIO模拟的I2S(从机)通讯,SAI只使用d0,MUX_DISABLE,word width为16,发现从机接收到的数据都是主机的数据循环左移一位得到的数据,比如发送0x8002,在代码里面从机得到的数据是0x5,改了很多配置都没用,最后勾选了下图中的Enable User Mode Support,数据就正常了,这是为什么 SAI配置如下 Re: S32K3 FLEXIO数据异常 Hi@Jason22 我查看了编译的结果,这个选项你勾不勾选完全不影响运行的结果。 按照你提供的工程,我勾选和不勾选Enable User Mode Support所编译生成的结果是完全一样的,这说明这不会导致你所说的问题。 Re: S32K3 FLEXIO数据异常 编译没问题,是出现没有”Mcal.h“文件嘛,如果是的话,清除工程,再次编译就没问题了(不知道这是不是IDE版本的问题,S32DS 3.6似乎没出现过这个错误)。如果不是这个错误,方便说一下编译时出现了什么问题嘛 Re: S32K3 FLEXIO数据异常 Hi@Jason22 抱歉,我看错了,这不是IDE版本的原因,是我将Enable User Mode Support看成了Enable Flexio Common Support 你能再次检查下你提供的工程吗,我无法编译成功。 Re: S32K3 FLEXIO数据异常 没有勾选"启用用户模式支持",配置还是有效的 不勾选"Enable Flexio Common Support",配置才无效,我使用的是 S32DS 3.5.14,这和 S32DS 版本有关嘛 Re: S32K3 FLEXIO数据异常 嗨@Jason22 你不勾选 "启用用户模式支持"下面的配置不是不生效了嘛 Re: S32K3 FLEXIO数据异常 我也比对了,发现也是一样,重新运行了一下程序,发现勾选后,又出现了数据循环左移的情况,但我第一次勾选的时候,数据确实是正常了,重复跑了几次也正常,不知道是什么因素导致的。 那我想询问一下,是我的配置还是代码有问题嘛,为什么从机接收到的数据刚好是主机发送的数据循环左移的结果?谢谢 主机发送的数据 从机收到的数据 Re: S32K3 FLEXIO数据异常 Hi@Jason22 逻辑分析仪自己去测一下你发出的数据是不是正确的
View full article
在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 在线客服微【xins4698】万宝路公司现场负责人申请上下分直属游戏流程 LPC Marketing LPC11xx LPC12xx lpc13xx lpc15xx LPC51Uxx LPC546xx LPC54xxx LPC55xx LPC800
View full article
spi example code Hello, I am studying the spi example code provided by NXP in a project called 'Spi_Transfer_S32K312'. I want to know what each function means in the code, can I know the location of the header file? Re: spi example code Hi @mingimin  The header files are located under RTD → include within the project directory. Additionally, I recommend reviewing the S32K3/S32M27x SPI Driver Integration Manual and the User Manual included with the RTDs. These documents provide detailed information about the driver, including its limitations, hardware and software requirements, usage guidelines, and configuration instructions. They are helpful for a deeper understanding of the driver's behavior and capabilities. You can find these resources, for example, at the following path: C:\NXP\S32DS.3.5\S32DS\software\PlatformSDK_S32K3\RTD\Spi_TS_T40D34M50I0R0\doc Please note that the exact path may vary depending on the S32DS version and your installation directory. BR, VaneB
View full article
如何下载芯片的相关资源的文档 例如:S32K3xx_interrupt_map.xlsx Re: 如何下载芯片的相关资源的文档 Hi@PQF 在官网下载数据手册和指导手册。在指导手册的附件中可以找到你要的这些文档。 https://www.nxp.com/products/S32K3
View full article
FS32K144HAT0MMHT用セーフティ周辺ドライバ(SPD)に関するお問い合わせ – 入手状況と無料ソース こんにちは、チームの皆さん FS32K144HAT0MMHT MCU を使用して新しい ISO 26262 (ASIL-B) プロジェクトを開始しており、セーフティ ペリフェラル ドライバ (SPD) がどのように動作するかを理解したいと考えています。 SPD パッケージはどこからダウンロードできますか? また、NXP ソフトウェア ライセンス & サポート ポータルでは、SW32K1-SPD-D のような特定のパッケージ名が必要ですか? SPD は無料ですか、または標準の RTD/SDKs ダウンロードに含まれていますか、それとも別のライセンスが必要ですか? 初期開発で SPD ドライバを研究できるサンプルや無料ソースはありますか? SPD または関連リソースの検索に関するガイダンスがあれば幸いです。 ご回答をお待ちしています。 Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 S32K1 – セーフティ ペリフェラル ドライバ (SPD)には、次のドライバのみが含まれています。 S32K1用拡張MCEMドライバ、バージョン1.0.1 https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catid=SW32K1-SPD-D&_gl=1*ao7djc*_ga*M... 。 ドライバは、無料で入手できる S32K1xx 標準ソフトウェア パッケージに含まれています。 S32K1/S32M24x リアルタイム・ドライバ、ASR R21-11、バージョン 2.0.0 P04 と互換性があります。 ただし、このドライバの機能例は提供されていません。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 この SPD は生産をサポートします。実稼働環境での使用に適しているかどうか確認していただけますか? Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 はい、そうです。リリースノートを参照してください。 このバージョンは RTM (製造準備完了) レベルです。 よろしくお願いいたします。 ダニエル Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは、 ご返答ありがとうございます。 最新の S32 Design Studio IDE をインストールし、リリースノートに記載されているように RTM (Ready to Manufacture) RTD SDK を使用しました。CAN サンプル プロジェクトは、提供された SDK と構成ツールを使用して直接生成されました。 ただし、この設定でも、次のビルド エラーが発生します。 致命的なエラー: Port_Ci_Port_Ip_Types.h:そのようなファイル、又はディレクトリはありません エラー発生場所: ボード/Port_Ci_Port_Ip_Cfg.c:56 #include "Port_Ci_Port_Ip_Types.h" Re: Inquiry about Safety Peripheral Drivers (SPD) for FS32K144HAT0MMHT – Availability and Free Sourc こんにちは@KAVINKUMAR7 、 これは互換性の問題のようです。 正しい S32DS IDE バージョンでは、互換性のある RTD と、SPD リリース ノートに指定されている SPD のみをインストールする必要があります。追加の RTD バージョンは存在しない必要があります。複数の RTD バージョンが必要な場合は、個別の IDEs をインストールすることをお勧めします。 追加の質問は SPD とは関係がなくなったため、さらにサポートが必要な場合は新しいThreadを作成してください。 よろしくお願いいたします。 ダニエル
View full article
无法将 iMX93EVK 中的 lpuart1 更改为 lpuart7 在过去的一个多月里,我一直在尝试将默认控制台从 lpuart1 更改为 lpuart7。我想更改 linux 控制台和 u-boot 控制台,或者至少我想查看日志。这是为了让 iMX93EVk 的 SOC 在新的载体上工作。然而,我却无法做到这一点。这是我尝试使用的补丁。还有我发现的所有我认为可以帮助我的帖子。我错过了什么? i-MX-93-91-使用yocto项目调试控制台重定位 i-MX-Processors/Change-UART-for-imx93-in-uboot-and-kernel i-MX 处理器/imx8ULP 将 u-boot 串行控制台从 UART5 更改为 UART4 非常感谢你们的帮助,谢谢 Linux Re: Cant change lpuart1 to lpuart7 in iMX93EVK 你好 要成功地将调试控制台从 lpuart1 更改为 lpuart7,你需要修改三个关键元器件:U-启动、Arm 可信固件和 Linux 内核配置。 完整解决方案: 1.对于 U-Boot(lf_v2024.04 分支): - 修改设备树文件以更新控制台路径和引脚配置 - 更新板配置以指向 lpuart7 - 使用 imx93_11x11_evk_defconfig 作为配置基础 2. 对于 Arm 可信固件(lf_v2.10 分支): - 更改 ATF 源中的 UART 控制台位置 - 更新 IMX_LPUART_BASE 以指向 lpuart7 的基址 - 在取消设置 LDFLAGS 后使用 "make plat=imx93" 构建 3. 对于 Linux 内核: -将 bootargs 更新为引用 ttylP6(对应于 lpuart7) -更新设备树中的选定部分 该过程需要使用这些修改后的元器件重建 flash.bin 映像。另一位客户需要将 i.MX93 上的 UART1 重新映射到 UART8,也成功解决了类似问题。 此致 Re: Cant change lpuart1 to lpuart7 in iMX93EVK 谢谢,我无法确认该解决方案是否有效。我已经执行了您的所有更改,但发现错误出在硬件本身。一旦定制载体修好了,一切都测试好了,我就可以确认了。 感谢您的回复
View full article
How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hi, I have the i.MX 8M Mini LPD4-EVK up and running, and I would like to perform power consumption measurements on specific independent power rails, such as VDD_1V8 and NVCC_DRAM_1V1. I have located the corresponding PMIC outputs (BUCK8 and BUCK7) on the schematic, but I noticed that there are no onboard shunt resistors (sense resistors) for these lines. Could you please advise on the best method to measure the current (or power) for these rails? Thanks! Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Hello, In the case of i.MX8MM we do not have a board to do the power measurement in each power rail as occurs in other boards such as i.MX 8M Plus Evaluation Kit Enabling Power Measurement. If you need to measure this you need to design a new SOM board to include these shut resistors or maybe you could try to rework the board to add a shunt resistor in a trace. You can use the schematics of the mentioned board as reference to add the resistors and do the measurement. i.MX 8M Plus Power Measurement Board Design Files Best regards. Re: How to measure power consumption for individual power rails on the i.MX 8M Mini LPD4-EVK? Okay, thanks.
View full article
串行下载器 - 奇怪的问题 我在 RT1052 上遇到了一个奇怪的问题,如果我将启动引脚配置为串行启动。 它无法启动固件,也不会进入串行下载器模式(既不是 UART 或非 USB)。 但当我将 GPIO_B0_15 下拉至 GND 时,串行下载正常工作。 我找不到任何关于这个信号对启动过程的影响的文档。 - 处理器出厂时是全新的 - TXD1/RXD1 有上拉电阻 顺便说一下:烧录 BT_FUSE_SEL 串行下载后可以正常工作 我们已经开发了几个类似的电路,以前从未遇到过这个问题。
View full article
闪存中的常数 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 我正在使用 IAR 工具集,设备是 MKE02Z64。我有几个常量值想放在闪存中(如果可能的话)以释放 RAM,但我找不到用 IAR 工具实现的方法。 最初,我使用的只是一个相当标准的:const uint16_t foobar; 这样一来,foobar 仍然处于数据内存中。我接下来试了试(根据我在网上找到的资料):const volatile uint16_t foobar @"FLASH"; 这没有产生任何错误或警告,但 foobar 仍在数据内存中,而不是代码内存中。 能做到吗? 谢谢! Re: const in flash memory Great explanation of how `const` works when stored in flash memory, especially for embedded systems where every byte matters. It’s interesting how efficient memory placement can tighten performance without changing logic. I recently explored similar structured info on Cass County Justice while researching data storage and organization best practices. Posts like this are helpful for bridging theory with real-world application. 很好地解释了 “const” 在闪存中存储时的工作原理,特别是对于每个字节都很重要的嵌入式系统。有趣的是,在不改变逻辑的情况下,高效的内存布局可以提高性能。最近,我在研究数据存储和组织的最佳实践时,在卡斯县司法局 探索了类似的结构化信息。这样的帖子有助于将理论与实际应用相结合。 Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 看来 Mark Butcher 是对的--我查看了链接器的输出,实际上,const 存在闪存中。让我感到不解的是,生成的映射文件显示 const 为"Data" ,而不是"Code" ,我以为它说的是内存部分,而不是实际的数据类型。 感谢您的回复! Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,戴夫、 请查看以下示例,了解如何将 Const 置于 IAR IDE 软件的 Flash 地址。 在 *.icf 文件中定义一个 [.我的参数] 部分的起始地址,并将该部分置于 ROM 内存中: 定义符号 __region_FlexNVM_start__ = 0x10000000; 置于 mem:__region_FlexNVM_start__ { 只读部分 .myparameter}; 在代码文件 (*.c) 中,将数据放入该部分: const char parameter1[16] @".myparameter"= {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF}; IAR 在专用地址中放置变量的另一种方法: #pragma location=0x3000 const int test1 = 1; const int test2 @ 0x3004 = 2; 然后,我在地图文件中找到了以下结果: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x00003004 0x4 数据 GB hello_world.o[1] 如果我使用以下代码 #pragma location=0x3000 const int test1 = 1; const int test2 = 2; 然后只把 test1 变量放在 0x3000,把 test2 放在另一个地方,映射结果如下: test1 0x00003000 0x4 数据 GB hello_world.o[1] test2 0x000016ec 0x4 数据 GB hello_world.o[1] 将变量放入专用地址的另一种方法: 在 .icf文件定义的内存区域,如 定义符号 __ICFEDIT_region_ROM_DATA_start__ = 0x0003F800; 定义符号 __ICFEDIT_region_ROM_DATA_end__ = 0x0003FFFF; 定义区域 ROM_DATA_region = mem:[从 __ICFEDIT_region_ROM_DATA_start__   to __ICFEDIT_region_ROM_DATA_end__]; 置于 ROM_region { 只读,代码块重定位}; 在 C 代码中,例如 #define NVM_DATA _Pragma("location=\"NVM_DATA\"" ) NVM_DATA 常量 int test1 = 1; NVM_DATA const int test2 = 2; _Pragma("location=\"NVM_DATA\"" ) 与 #pragma location="NVM_DATA 相同。" 希望能有所帮助。 祝您愉快, 、 马辉 ----------------------------------------------------------------------------------------------------------------------- 注:如果本帖回答了您的问题,请点击正确答案按钮。Thank you! ----------------------------------------------------------------------------------------------------------------------- Re: const in flash memory <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,戴夫 @"FLASH" 仅用于 volatile 常量。 IAR(默认)行为是将常量(全局和静态)放入 Flash,尽管严格来说,const 关键字意味着该变量具有只读属性,而不是它位于特定的内存区域中(尽管嵌入式系统通常会像这样工作是有感知)。 例如 static const unsigned char usb_language_string[] = {4, DESCRIPTOR_TYPE_STRING, LITTLE_SHORT_WORD_BYTES(UNICODE_LANGUAGE_INDEX)}; 静态常量 unsigned char manufacturer_str[] = {10, DESCRIPTOR_TYPE_STRING, 'M',0, 'a',0, 'n',0, 'u',0}; static 常量 unsigned char product_str[] = {16, DESCRIPTOR_TYPE_STRING, 'M',0, 'y',0, ' ',0, 'P',0, 'r',0, 'o',0, 'd',0}; 静态常量 unsigned char serial_number_str[] = {10, DESCRIPTOR_TYPE_STRING, '0',0, '0',0, '0',0, '1',0}; static const unsigned char config_str[] = {10, DESCRIPTOR_TYPE_STRING, 'C',0, 'o',0, 'n',0, 'f',0}; static 常量 unsigned char interface_str[] = {8, DESCRIPTOR_TYPE_STRING, 'I',0, 'n',0, 't',0}; 静态常量无符号 char *ucStringTable[] = {usb_language_strring, manufacturer_str, product_str, serial_number_str, config_str, interface_str}; 地图显示 usb_language_string 0x00003d24 manufacturer_str 0x00003d28 product_str 0x00003d34 serial_number_str 0x00003d44 config_str 0x00003d50 interface_str 0x00003d5c ucStringTable 0x1ffff11c 请注意,除了最后一个阵列外,其他阵列都放入了闪存。我无法解释为什么规则会有一些例外,而你的特殊情况可能就是这样的例外,不管是出于什么原因。 也许最好直接联系 IAR,因为我也找不到控制最后几个剩余异常的方法。幸运的是,就我所见,它只影响到极少数这类东西。 此致 Mark Kinetis:µTasker Kinetis 支持 KE:支持 µTasker FRDM-KE02Z/支持 µTasker FRDM-KE02Z40M/支持 µTasker FRDM-KE06Z 欲获得完整的"开箱即用" Kinetis 体验并加快产品上市时间
View full article
I²C Hardware Debugging I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. 0. Table of Contents table of contents Anyway it doesn't work! (--; The target doesn't respond (꒪⌓꒪) Repeat start was necessary/unavailable Controllers that do not support clock stretching Multi-Controller The clock frequency is lowered Long distance routing. Noise and crosstalk can cause communication problems. Measuring Bus Capacitance SDA Line Stuck and Bus Clear Who is giving the signal? Reference materials 1. It just doesn't work! (--;   I forgot to put on the pull-up orz This is a common problem when using an I²C device for the first time. When you obtain a sample chip and try it out on a breadboard or universal board, you connect it to a microcontroller while checking the I²C signal names. At this point, it's easy to forget to attach a pull-up resistor . I²C signals have an output called " open drain ." A high-level voltage cannot be obtained unless an external pull-up resistor is attached. When trying to easily check operation using a breadboard, it is easy to forget about this resistor. Don't forget to use pull-up resistors on the SDA and SCL signals! How do you determine the pull-up resistor value? How is the value of a pull-up resistor determined? Generally, values such as 2.2 kΩ or 4.7 kΩ are used. I think many people use these values without much consideration. But what happens if a smaller or larger value is used ? A pull-up with a small resistance value can cause the problem of "not being able to pull the signal low enough." When a device outputs a low signal, current flows through the pull-up resistor. If the resistance is small, the current flowing here will be large, and this current will flow into the device that is outputting a low signal. The transistor that pulls the signal low inside the device has a resistance component, and this resistance and current create a voltage. For this reason, if the current becomes large, a higher-than-expected voltage will be generated, and a sufficiently low low-level voltage will not be obtained. Conversely, pull-up resistors with large resistance values can cause problems such as insufficient communication speeds. When a signal transitions from LOW to HIGH, the capacitance of the signal line is charged via the pull-up resistor, causing the voltage to rise. If a large resistance value is used for the pull-up, the current at this time becomes smaller, and it takes longer for the signal to rise (voltage to rise). There is a method for calculating the value of the pull-up resistor. Details are provided in Section 7 of the I²C Specification [English version (rev7)] [Japanese version (rev5)] . Generally, when using I²C fast mode (400kHz) with a pull-up voltage of 3.3V, a pull-up resistance of around 1kΩ to 8kΩ can be used without any problems [Figure 1]. Figure 1: Pull-up resistor values for I²C signal lines 2. The target doesn't respond (꒪⌓꒪)   No ACK returned!😭 I connected the microcontroller to the target, added a pull-up resistor, and checked the signal's HIGH level with an oscilloscope, but the target still did not respond . "Target not responding" means that no ACK is returned after the target address is sent. This is common in the early stages of evaluation. Many targets allow you to change the target address depending on their settings (for example, by connecting the address setting pin to power or GND), so you need to double-check which address is set. Also, even if you think you've set the address correctly, you need to check whether the address written in hexadecimal on the datasheet is a 7-bit representation (right-justified) or an 8-bit representation (left-justified). Furthermore, the microcontroller development tool (SDK) you're using may specify hexadecimal addresses in 7-bit representation (such as MicroPython) or 8-bit representation (such as Arm Mbed).💦 The I²C specification does not use either representation, and addresses are standardized to binary representation, so there is no such misunderstanding, but you should be careful when specifying them in hexadecimal.   How to check How can you specify the target address? Check this in the device specifications and development tools. Then double-check that the device address is set as intended. When checking on an actual device, for example in MicroPython the I2C class has a scan() method which displays a list of devices connected to the bus that are returning ACKs. One technique is to use this kind of function to quickly see what the settings are [Figure 2]. If the SDK you are using does not have a function like I2C::scan(), try sending addresses in order and checking for ACK/NACK. Figure 2: Testing I2C.scan() 3. Repeat starts were necessary/unavailable   Even if I communicate according to the target device specifications, I can't read the data? The I²C specification defines the signal levels and protocols in detail. Writes and reads can be performed in a defined manner on any target device. However , the method for accessing the registers and data buffers within that target is determined by the specifications of each device. For target devices with multiple internal registers, it is generally possible to specify and read/write registers using communications such as those shown in Figure 3. However, even if communications are performed in this manner, there are cases where the expected data is not read.   Repeat Start Condition When executing a write transaction to specify a register address and a read transaction to read the register consecutively, a repeated start condition is often used to start the second transaction. The repeated start condition is used to avoid the bus-free state that occurs after a stop condition before generating the next start condition. From the target device's perspective, using a repeated start condition is usually equivalent to using a stop and start condition. However, there are devices that do not do this, and for such devices you must use one of the two methods to read the registers. Some microcontroller SDKs provide an API for reading registers on I²C targets, which automatically handles access with a repeated start condition, but some microcontrollers do not support inserting a stop condition. In such cases, the API cannot be used as is, and it becomes necessary to handle the protocol at a lower level. It is important to be careful as devices and microcontroller SDKs can have "specification pitfalls" like this that you only notice later. Figure 3: Typical register access 4. Controllers that do not support clock stretching   The behavior is strange! I²C has an optional function called " clock stretching ." Even nowadays, there are rare devices that have this function. The general I²C controllers installed in many microcontrollers support this clock stretching function, so you don't have to worry about it too much, but if you are implementing your own controller, you need to be aware of this optional function.   What is clock stretching? I²C transmits and receives data according to the timing of the clock output by the controller. However, clock stretching is an option that allows the target side to make the controller wait [Figure 4]. The controller also outputs the clock via open drain. The controller monitors its own clock output and checks whether the signal is HIGH when it outputs HIGH. If the target side wants to make the controller wait, it holds this clock signal LOW. The controller knows it is being made to wait when the clock, which should be HIGH, turns LOW. If the controller ignores this target behavior, it may cause communication problems such as fewer clocks being output. Figure 4: Clock stretching 5. Multi-Controller   Also for debugging a running target device Multi-controller is also an optional feature of I²C. Multiple controllers can control communication on the same bus without affecting each other's communication.   There aren't many applications that use it There are not many cases where multiple controllers are used, except for a few applications. However, the I²C controllers built into many microcontrollers have this function. Using this function, for example, if there is a problem with a running system, you can connect another microcontroller to the I²C bus and read or overwrite the contents of each target's register settings to verify them [Figure 5]. Normal debugging involves checking the code you have written, so you probably won't have an opportunity to do this, but it may be useful when verifying an unknown system for which the source code is unavailable. Figure 5: Multi-master debugging 6. Clock frequency is lower   I thought I had set it to a 100kHz clock. There aren't many cases where the I²C bandwidth is used to its full potential. However, what if you find that communication is occurring at a clock frequency that is significantly different from the speed you intended? Clock stretching, which was introduced in the previous section, is related to frequency reduction . Below is an example at 100kHz, but the higher the frequency used, the greater this effect (rate of frequency reduction).   Check the waveform and adjust the frequency Clock stretching is a function that makes the controller wait. However, it does not only affect the target. As the signal line length increases and the number of connected devices increases, the capacitance of the bus increases. In this case, if a large resistor is used for pull-up, the rise of the signal will be slowed down. A slow signal rise time increases the time it takes for the clock to go high. After the clock goes high, the controller operates to ensure the set high hold time, resulting in a longer low-to-high transition time, which extends the low period. This causes a drop in the clock frequency [Figure 6]. Depending on the controller, you may be able to set the clock frequency in detail, or the LOW and HIGH periods of the clock. If you are concerned about the frequency, check the waveform and adjust the clock settings. 7. Long-distance routing. Noise and crosstalk can cause communication problems.   Data errors caused by waveform distortion I²C is an easy-to-use two-wire serial bus. Because it is a slow signal, it will operate stably even if the signal line is extended to a distance of a few tens of centimeters (although this depends on the environment). However, if you are not careful and consider the characteristics of I²C, you may experience unexpected behavior. High impedance, two wires Because I²C is an open-drain signal, when a HIGH level is output, the impedance of the signal line is high. With a push-pull signal, if the device outputting the signal is LOW it is close to short-circuiting to GND, and if it is HIGH it is close to short-circuiting to the power supply, but with I²C it is connected to the power supply via a pull-up resistor. If noise is picked up on the signal line here, the noise current will escape to the power supply via the resistor. In addition, the currents of each I²C signal line also affect each other, which causes crosstalk. To reduce noise and crosstalk, careful wiring is required. For example, GND or power supply wiring should be placed between the data and clock signals [Figure 7]. Alternatively, using a bus buffer is effective when transmitting over long distances via cable. However, because I²C is a bidirectional open-drain signal, standard logic buffers cannot be used as is. Various buffers are available for I²C, including those with signal voltage conversion functions and those that convert single-ended I²C to differential signals. By combining these, it is possible to create a stable and reliable system even when signal lines are run long distances. Figure 7: Crosstalk and noise 8. Measuring Bus Capacitance   Bus capacity limit... But how do you measure it? Up to 400kHz, I²C can communicate with a bus capacitance of up to 400pF. For 1MHz, I²C can communicate with a bus capacitance of up to 550pF. But how can we know this bus capacitance?   Calculate backward from the signal waveform This blog post introduces several topics related to bus capacitance, all of which point out that the rise time of signals increases. Bus capacitance can be determined from this rise time. [Figure 8] shows an example waveform. For an I²C signal pulled up to a 5V power supply with 2.2kΩ, the rise time (T) from the LOW reference voltage V OL = 1.5V to the HIGH reference voltage V OH = 3.5V is 154ns. The formula in section 7.1 of the I²C specification [English version (rev7)] [Japanese version (rev5)] is "T = 0.8473 x RC," so if we apply "C = T / (0.8473 x R)," we get approximately 82pF. Subtracting the capacitance of the probe used for measurement (15pF), we get approximately 67pF. Figure 8: Calculating bus capacitance 9. SDA Line Stuck and Bus Clear   SDA stuck at LOW and stopped working The controller and target communicate with each other based on a clock. If the number of clocks becomes inconsistent due to noise or other reasons, not only will the communication be bit-shifted, but the situation will become known as "bus stuck." Figure 9-a shows an example in which the controller thinks it has sent nine clock pulses and finished communication, but the target is still returning an ACK as the last bit.   Getting out of a stuck bus situation There are two ways to get out of this state. One is to reset the target. The other is to clear the bus. Bus clearing is described in the I²C specification [English version (rev7)] [Japanese version (rev5)] (Section 3.1.16). If SDA is stuck LOW, you can return the target state to normal by generating nine clock pulses. [Figure 9-b] shows an example where an ACK was issued at the end of a read transfer due to a programming error on the microcontroller side. The MSB of the next data to be read happened to be 0, so SDA was fixed LOW. To get out of this situation, we issue a clock nine times and clear the bus, after which we can see that the target has returned to normal. In addition, the System Management Bus (SMBus), which uses I²C as its specification, has a timeout function on top of the normal I²C specification, and is specified to automatically return to normal operation after a maximum of 35 ms has elapsed on the target device. The I²C specification does not have such a timeout provision, so once a stuck state occurs, it cannot be recovered from without resetting or clearing the bus. Figure 9-a: Example of a bus stuck Figure 9-b: Bus Clear   10. Who is sending the signal? Series resistor   Who is keeping the signal low? When looking at the bus status of the bus stack mentioned above or a multi-controller system, you may want to know which device is sending the signal. The voltage when a LOW signal is output varies depending on the drive capacity of each device, and this can tell you which device is sending the signal.   Add a series resistor and check the voltage [Figure 10] is an example of a multi-controller waveform. This waveform shows two controllers attempting to start communication at the same time, with clock synchronization and arbitration taking place. One controller (microcontroller 1) is attempting to start communication at 400 kHz, and the other controller (microcontroller 0) is attempting to start communication at 100 kHz, each driving the SCL signal. Looking at the clock waveform, we can see that the terminal of the 100kHz controller is connected to the bus via a 100Ω resistor, so when microcontroller 0 outputs a LOW, this series resistor limits its ability to draw current, causing the LOW voltage to rise slightly. By using this mechanism, we can determine which device output a LOW. Figure 10: Who is signaling?   11. Reference materials I2C Bus Specification and User Manual (Rev5.0 Japanese version) I2C Bus Specification and User Manual (Rev7.0 English version) 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. NXP Community Blog: An Overview of the I²C Bus [Originally published in Interface, March 2024 issue (CQ Publishing), " UART, I²C, SPI, CAN... Problems that can occur with various standards " pp. 101-115. The I²C-related section has been excerpted and revised for this blog post .] Change history: 2025-02-04: First Edition 2025-08-14: Corrected a typographical error in the section "3. Repeat Start was necessary/unavailable." Added a line break to the text of the section "7. Long-distance routing. Communication becomes erratic due to noise and crosstalk." 2026-01-02: Added an introductory section before the table of contents / Added a YouTube video link to the section about MicroPython. 2026-04-14: Fixed broken links. Improved readability.     ========================= 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.) I²C is used as a serial interface between chips. It is so commonplace that it is used in so many systems that no problems arise. However, sometimes even small things can get you hooked. Here we will introduce some common I²C problems and some easy debugging methods. Interface Japanese blog
View full article
CAN MCX Nx4x FlexSPI ポートA とポートB を異なるデバイスで同時に使用できますか。 こんにちは、NXPさん FlexSPI を使用してハードウェアを接続し、両方のデバイスを同時にCAN使用できますか? ポートA->NORフラッシュ ポートB->PSRAM また、参考になる構成例はありますか? どうもありがとうございます MCX N Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、ハリー。 Spark の説明によると、device_config と clk ソースをチェックする必要がありますか? 私は見た typedef 構造体 _flexspi_config { ...... #定義されている場合(FSL_FEATURE_FLEXSPI_SUPPORT_SEPERATE_RXCLKSRC_PORTB) && FSL_FEATURE_FLEXSPI_SUPPORT_SEPERATE_RXCLKSRC_PORTB flexspi_read_sample_clock_t rxSampleClockPortB; /*!< フラッシュ読み取り用のサンプルクロックsource_bの選択。*/ #endif 1.portA と PortB を使用する場合、別々の rxclksource を使用する必要がありますか? 2. FLEXSPI_SetFlashConfig() に渡される &deviceconfig をチェックする必要がありますか? Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、ハリー。 サンプル コードでは、PortA の NOR フラッシュ ID にアクセスする方法のみが提供されており、MCX-N5XX-EVK にコネクテッドされた PSRAM を使用して PortB にアクセスするためのコードを追加しようとしています。参考までに実験結果を以下に示します。 FlexSPI 設定: ポートA->NORフラッシュ ポートB->PSRAM テストCASE1:成功 初期PortAおよびPortAフラッシュIDの読み取り(1バイト) テストCASE2: 成功 ポートBの初期値とポートBのフラッシュIDの読み取り(1バイト) テストCASE3: 失敗 最初にポートAとポートBの両方が、アドレスを使用してポートAとポートBのフラッシュID(1バイト)を個別に読み取ります。 以下に参考用のコードスニペットを示します。PortA と PortB の状況で間違いがあったか、さらに設定が必要かどうかを確認してください。 ポートAとポートBの両方のフラッシュデバイスを初期化するためのflexspi_nor_flash_initのコード変更 ポートBデバイスを読み取るためにflashXfer.deviceAddressにオフセットを追加します。 参考までに、変更されたファイルとプロジェクト全体のアーカイブを以下に示します。 Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは SDKs サンプルを参照していますが、同時に 2 つのデバイスではなく 1 つのフラッシュ デバイスにコネクテッドされています。 2 つのデバイスを同時に動作させるには、設定が足りないのではないかと思います。 参考になるサンプル構成はありますか? または、レジスタ レベルから正しい構成を実行したことをどのように確認すればよいでしょうか? よろしくお願いします。 Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは@greatshow_chen はい、NXP MCX Nx4x では、FlexSPI ポート A とポート B の両方を同時に使用して、2 つの異なるメモリ デバイスに接続CAN。 ポートA->NORフラッシュ ポートB->PSRAM 次の点を確認する必要があります。 NOR フラッシュと PSRAM は競合するピンを共有していません。 flexspi_octal_polling_transferをCAN参照します。 BR ハリー Re: Can we use MCX Nx4x FlexSPI portA and portB with different device at the same time. こんにちは、 FlexSPI を搭載した多くの NXP マイクロコントローラ (i.MX RT シリーズなど) には、2 つの独立した FlexSPI チャネル (ポート A とポート B) があります。各ポートは、異なるタイプのメモリ デバイスと通信するように構成CAN。これにより、NOR フラッシュを 1 つのポートに接続し、PSRAM を別のポートに接続できるようになります。
View full article
MIMXRT1021 内部 RTC 振荡器的特性 我正在使用看门狗,我发现它的源时钟是 RTC 时钟。 我没有使用晶体或外部 RTC 时钟源,因此只能依靠内部环形振荡器。 对环形振荡器特性的规定不一致: 在《硬件用户指南》中,它被指定为"...片上 40 kHz 振荡器。公差为 ±50%" (表 4) 在技术数据表的第 4.1.4 节中也有类似的规格说明但是在第 4.2.4.2 节中它说 " 这个方块的频率范围约为 10—45 kHz。" 选择看门狗超时时间有时是一种微妙的平衡行动,必须容许源时钟容差 +/-50%。 我的问题是 1.实际名义振荡频率是多少?如果不是 32 千赫,为什么不是? 2.如果标称频率不是 32kHz,那不就意味着看门狗超时已经出错了吗? 3.它随温度有何变化?热的时候是加速还是减速? 4.+/-50% 是否包括温度变化? 谢谢! 亚历克斯 i.MX RT102x Re: MIMXRT1021 characteristics of internal RTC oscillator 你好@alex_conway,很抱歉这么晚才回复你。 很抱歉造成您的困惑。我想说的是,我之前与你们分享的数据确实是用于生产的: 32kHz +/- 50% -40C 至 105C。 BR Habib Re: MIMXRT1021 characteristics of internal RTC oscillator 嗨,哈比卜 数据表中的所有信息均经过生产测试。 哪个数据表中包含哪些信息?请您回到我的原帖: "在《硬件用户指南》中,它被指定为"...片上 40 kHz 振荡器。公差为 ±50%" (表 4) 在技术数据表的第 4.1.4 节中也有类似的规格说明但是在第 4.2.4.2 节中它说 " 这个方块的频率范围约为 10—45 kHz。" 其中没有任何一项注明在 -40C 至 105C 温度范围内的频率为 32kHz +/- 50% ,也没有任何一项在表格中列出,而这是制造商通常会遵守的规格。 谢谢! 亚历克斯 Re: MIMXRT1021 characteristics of internal RTC oscillator 你好,@alex_conway、 所以,为了明确起见,您是说 +/-50% 包括所有可能的变化,包括初始值和从 -40C 到 105C 的温度? 是。初始值和温度都包含在这个百分比中 是否在生产中进行了测试?- 即所有芯片是否都经过 -40C 至 105C 的测试,以确保振荡器频率在 +/-50% 或 32kHz 范围内? 数据表中的所有信息均经过生产测试。 BR Habib Re: MIMXRT1021 characteristics of internal RTC oscillator Hiabib, 所以,为了清楚起见,您是说 +/-50% 包括所有可能的变化,包括初始值和从 -40C 到 105C 的温度? 是否在生产中进行了测试?- 即所有芯片是否都经过 -40C 至 105C 的测试,以确保振荡器频率在 +/-50% 或 32kHz 范围内? 谢谢 Alex Re: MIMXRT1021 characteristics of internal RTC oscillator 您好@alex_conway, 正在回答您的问题: 既然您声明标称频率为 32kHz,那么无论振荡器运行在什么频率下,看门狗超时时间是否都以标称的 32.786kHz 为参考? WDOG 的时钟频率来自振荡器。如果振荡器的工作频率低于 32 kHz,这一偏差将直接影响 WDOG 的定时。 因此,内部振荡器有助于加快启动速度并提供防篡改保护,但不应成为 32 kHz 时钟的唯一来源。 +/-50% 中有多少是初始值公差,多少是温度变化? 正如我在上一篇文章中提到的,温度导致的频率偏差受多种因素影响,可能无法预测。不过,在 -40°C 至 105°C 的工作温度范围内,变化将保持在 ±50% 之内。 BR 哈比卜 Re: MIMXRT1021 characteristics of internal RTC oscillator 嗨,哈比卜 感谢您的回答,我有几个后续问题: 既然您声明标称频率为 32kHz,那么无论振荡器运行在什么频率下,看门狗超时时间是否都以标称的 32.786kHz 为参考? +/ -50% 中有多少是初始值容差,有多少是温度变化? 谢谢! 亚历克斯 Re: MIMXRT1021 characteristics of internal RTC oscillator 你好,@alex_conway、 对不起,我的回复晚了。回答您的问题 1.实际名义振荡频率是多少?如果不是 32 千赫,为什么不是? 标称频率为 32 kHz,但根据工艺变化和温度条件,其变化幅度可达 ±50% 。 2.如果标称频率不是 32kHz,那不就意味着看门狗超时已经出错了吗? 您能否提供更多细节,说明您目前是如何测试 WDOG 超时的? 3.它是如何随温度变化的? 温度导致的频率偏差受多种因素影响,可能无法预测。不过,在 -40°C 至 105°C 的工作温度范围内,变化将保持在 ±50% 之内。 4.+/-50% 是否包括温度变化? 是的,±50% 公差考虑了温度变化以及工艺变化。 BR Habib Re: MIMXRT1021 characteristics of internal RTC oscillator 你好 Habib, 我没用 RT1020-EVK,我的板没有 RTC 时钟或水晶。RTC_XTALI 引脚连接至接地,RTC_XTALO 引脚开路。 谢谢 Alex Re: MIMXRT1021 characteristics of internal RTC oscillator 你好,@alex_conway、 我在内部询问,以便获得更多有关标称值和温度对该振荡器影响的信息。感谢您的耐心等待。 与此同时,我还有一个问题:能否请您详细介绍一下目前是如何测试 WDOG 超时的?如果您使用 RT1020-EVK,请注意它包含一个 32kHz 的外部振荡器,这意味着它不依赖于内部振荡器: BR Habib
View full article
MIPI-CSI-2 とベイヤーパターンカメラ (RAW10) を使用した i.MX93 こんにちは、 カスタムの i.MX93 ベースのボードを持っています。提供されている CSI-2 インターフェースを使用して、ベイヤーパターン カメラ (IMX327) で RAW10 データを転送したいと考えています。 デバイスツリーの設定とプレスリリース、製品ニュース-ctlの設定はSO far正しいのですが、パイプラインを開始するとdwc-mipi-csi2からIRQストームが発生し、「 IPIインターフェース致命的イベント情報」カウンタが増加します。INT_ST_IPI_FATALレジスタの値は0x2aで、IPI FIFOオーバーフローを示しています。IPIがIRQを1つも持っていないため、ISIにデータをプッシュしていないのではないかと考えています。 https://community.nxp.com/t5/i-MX-Processors/About-settings-to-operate-ov5640camera-on-i-MX93EVK/mp/1716885/highlight/true#M212016を参照何らかの特別な設定があるようです。これらの値をRAW10に適合させようとしましたが、CAMERA_MUX[DATA_TYPE]の値0x31(ユーザー定義16)について疑問がありました。CSI-2 データ型 RAW10 の場合、これが 0x2b ではなくユーザー定義であるのはなぜですか? IPI エラーの原因は何でしょうか?この問題をさらにデバッグするにはどうすればよいでしょうか? 感謝と敬意を表します。 アレクサンダー Re: i.MX93 using MIPI-CSI-2 with a Bayer Pattern camera (RAW10) アップデートはありますか?Omnivision 9732でも同じ問題が発生しています Re: i.MX93 using MIPI-CSI-2 with a Bayer Pattern camera (RAW10) こんにちは@brian14さん、 i.MX93 と RAW10/12 Bayer データを出力するカメラ センサでも同じ問題が発生しています。 何かアイデアや提案はありますか? よろしくお願いします。 Re: i.MX93 using MIPI-CSI-2 with a Bayer Pattern camera (RAW10) こんにちは、 連絡あった?もう1ヶ月が経ちました。 ありがとう、アレクサンダー Re: i.MX93 using MIPI-CSI-2 with a Bayer Pattern camera (RAW10) こんにちは、 このトピックに関して何かニュースはありますか? ありがとう、そしてよろしく。 アレクサンダー Re: i.MX93 using MIPI-CSI-2 with a Bayer Pattern camera (RAW10) こんにちは@steinaさん、 NXP サポートにお問い合わせいただきありがとうございます。 このCASEについては社内チームで検討し、できるだけ早くお問い合わせいたします。 すてきな一日を!
View full article
clrc663 lpcd i 和 q 值 i 得到 0x00 我正在使用 clrc663 作为读卡器我在那里实现了 lpcd 模式我在运行 lpcd 校准功能时遇到了问题我得到了 i 而且 q 值是 0x00 我从天线得到的是什么问题怎么解决这个问题 我使用的这个函数   /* 执行 LPCD 校准 */ phStatus_t Calibrate_LPCD(uint32_t dwLPCDDemo, uint32_t *pdwLPCDRefValue) { phStatus_t wStatus; uint8_t bValueI = 0; uint8_t bValueQ = 0; uint8_t bVersion = 0; uint8_t bDigitalFilter = PH_ON; uint16_t wDetectionOption = PHHAL_HW_RC663_FILTER_OPTION1; uint16_t wPowerDownTimeMs = LPCD_POWERDOWN_TIME; uint16_t wDetectionTimeUs = LPCD_FIELD_ON_DURATION; DEBUG_PRINTF("\nLPCD 校准开始。"); phhalHw_FieldOn(pHal); phhalHw_Wait(pHal, PHHAL_HW_TIME_MILLISECONDS, 5);   /* 配置 LPCD 模式默认值,以执行 LPCD 校准循环。 * 提供输入参考 I 和 Q 值为零,并将检测时间提供给 * 在此持续时间内打开射频,使用 I 和 Q 通道值测量负载变化。 * 配置合适的掉电时间以节省 RC663 读卡器IC 的功耗。*/ wStatus = phhalHw_Rc663_Cmd_Lpcd_SetConfig(pHal,PHHAL_HW_RC663_CMD_LPCD_MODE_DEFAULT、 bValueI、bValueQ、wPowerDownTimeMs、wDetectionTimeUs); CHECK_STATUS(wStatus); DEBUG_PRINTF("\nphhalHw_Rc663_Cmd_Lpcd_SetConfig."); /* 读取版本寄存器,以区分 RC663 Old(RC66301、RC66302)和 RC663 Plus(RC66303)。*/ wStatus = phhalHw_Rc663_ReadRegister(pHal,PHHAL_HW_RC663_REG_VERSION,&bVersion); DEBUG_PRINTF("\nphhalHw_Rc663_ReadRegister."); CHECK_STATUS(wStatus); 如果 (bVersion == PHHAL_HW_CLRC663PLUS_VERSION)     { /* 配置充电泵,使其具有较高的检测范围。 * 启用电荷泵会在检测阶段增加功率级 * 探测范围。这导致平均电流消耗增加。*/ wStatus = phhalHw_SetConfig(pHal,PHHAL_HW_RC663_CONFIG_LPCD_CHARGEPUMP,PH_ON); CHECK_STATUS(wStatus); DEBUG_PRINTF("\nphhalHw_SetConfig."); /* 配置数字滤波器会触发信号 RC663 Plus 算法以获得倍数的平均值 * 检测 I 值和 Q 值的变化。这反过来又延长了射频开启时间 * 增加平均电流消耗。*/ wStatus = phhalHw_SetConfig(pHal,PHHAL_HW_RC663_CONFIG_LPCD_FILTER、 ((uint16_t)(bDigitalFilter)|wDetectionOption)); CHECK_STATUS(wStatus);    }   /* 执行 LPCD 校准周期并获取 LPCD 参考 I 和 Q 值。*/ wStatus = phhalHw_Rc663_Cmd_Lpcd_GetConfig(pHal,&bValueI,&bValueQ); DEBUG_PRINTF("\nphhalHw_Rc663_Cmd_Lpcd_GetConfig."); CHECK_STATUS(wStatus);   *pdwLPCDRefValue = ((bValueI) | (bValueQ<< 0x8)); DEBUG_PRINTF("\npdwLPCDRefValue.");   DEBUG_PRINTF("\nLPCD 校准成功。");   返回 PH_ERR_SUCCESS; } 然后我在主 while 循环中调用 /* ------------------------------------------------------------------ * 开机后运行一次 LPCD 校准 * ------------------------------------------------------------------ */ phStatus_t LPCD_Calibrate(void) { phStatus_t status; uint32_t refVal; char dbg_buf[64]; // 确保在校准前开启 RF phhalHw_FieldOn(pHal); phhalHw_Wait(pHal,PHHAL_HW_TIME_MILLISECONDS,5); status = Calibrate_LPCD(LPCD_DEMO_MODE_DEFAULT,&refVal); // 校准后关闭射频 phhalHw_FieldOff(pHal); if (status == PH_ERR_SUCCESS) { gLpcdValueI = (uint8_t)(refVal& 0xFF); gLpcdValueQ = (uint8_t)((refVal 0xFF)); gLpcdValueQ = (uint8_t)((refVal 0xFF)).>> 😎 & 0xFF); gLpcdCalibrated = 1; sprintf(dbg_buf,"LPCD Calibration OK (I=0x%02X, Q=0x%02X)\r\n", gLpcdValueI, gLpcdValueQ); DEBUG_UART2((unsigned char*)dbg_buf, strlen(dbg_buf)); } else { DEBUG_UART2((unsigned char*)"LPCD Calibration FAILED\r\n", 28); } return status; } 如果 (!lpcdCalibrated)     { 如果 (LPCD_Calibrate() == PH_ERR_SUCCESS) { lpcdCalibrated = 1; // 标记为已完成 DEBUG_UART2((unsigned char*)"LPCD Calibration OK\r\n", 23);          } 不然 { DEBUG_UART2((unsigned char*)"LPCD Calibration FAILED\r\n", 28);      }    } Re: clrc663 lpcd i and q value i getting 0x00   您好,先生, 非常感谢您与我们分享您的示意图。不过,我还是要问一下你们天线的史密斯图。我们确实有一份应用笔记,其中显示了使用廉价的纳米VNA进行这些测量的步骤。 Re: clrc663 lpcd i and q value i getting 0x00 我在这里附上我的硬件测试和原理图,在正常模式下,我得到的是 uid,这不是问题;在 lpcd 模式下,我得到的是 0x00,0x00 的 q 值。在此查看我的测试文件。 Re: clrc663 lpcd i and q value i getting 0x00 抱歉,但是对自定义板的支持非常有限。   要提供任何具体信息,我需要您的硬件,因为评估套件的天线设置配置与您的配置存在很大差异。   不过,您是否介意分享一下天线的史密斯图和原理图,这将是我们提供良好建议的一个很好的起点。   正如我在上一篇文章中提到的那样,我们建议从一开始就遵循一些步骤。其中之一是将我们的 EVK 与您的新天线和新的匹配电路一起使用。所有这些都显示在我们的许多文档中。请看 NFC天线设计|恩智浦半导体视频2。   发送 RF 开启命令后,I 和 Q 值应显示与 0x0 不同的值。 Re: clrc663 lpcd i and q value i getting 0x00 我使用的是带有 stm32 硬件的定制 PCB Clrc663,只有在软件中天线调谐是正确的,我使用了 nfcrdlibEx6_rc663_LPCD_Demo.c 库中的校准演示代码,但 i 和 q 值均为 0x00,然后我使用错误寄存器来确定我在其中出现了什么错误。 printf debug i getting === EEPROM / LPCD 检查开始 === VERSION(0x7F)=0x1A ERROR(before)=0x00 ERROR(after LOADREG)=0x80 > > > EEPROM 错误 (0x80) 仍然存在。LPCD 可能无法正确校准! === EEPROM / LPCD 检查完成 === // 这是代码 phStatus_t Rc663_EepromInitAndCalibrateLPCD( phhalHw_Rc663_DataParams_t *pHal, uint32_t *pdwLPCDRefValue) { phStatus_t status; uint8_t bVersion, bIrq1, bErr; uint8_t bValueI = 0, bValueQ = 0; char dbg[64]; uint8_t eepromVal; uint8_t addr; sprintf(dbg,"\r\n=== EEPROM + LPCD Init ===\r\n"); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 1.读取芯片版本 */ status = phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_VERSION,&bVersion); CHECK_STATUS(status); sprintf(dbg,"VERSION(0x7F)=0x%02X\r\n", bVersion); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 2.清除任何现有错误 */ phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_ERROR,&bErr); sprintf(dbg,"ERROR(before)=0x%02X\r\n", bErr); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); /* 3. 强制将 LOADREG 从 EEPROM 写入寄存器 */ status = phhalHw_Rc663_WriteRegister(pHal, PHHAL_HW_RC663_REG_COMMAND, PHHAL_HW_RC663_CMD_LOADREG); CHECK_STATUS(status); /* EEPROM 加载稍有延迟 */ phhalHw_Wait(pHal, PHHAL_HW_TIME_MILLISECONDS, 5); /* 4.再次检查错误寄存器 */ phhalHw_Rc663_ReadRegister(pHal, PHHAL_HW_RC663_REG_ERROR,&bErr); sprintf(dbg,"ERROR(after LOADREG)=0x%02X\r\n", bErr); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); if (bErr& PHHAL_HW_RC663_BIT_EE_ERR) { sprintf(dbg,"> > > EEPROM 错误 (0x%02X) detected!\r\n" 、berR); DEBUG_UART2 ((uint8_t*) dbg、strlen (dbg)); /*---EEPROM 转储(前 16 个字节用于调试)---*/ for (addr = 0;addr < 0x10;addr++) { phalHW_rc663_cmd_reade2 (phAL,addr,1,& eePromade2) val); spr intf (dbg," EEPROM [0x%02X] = 0x%02X\ r\n ",addr,eepromVal);DEBUG_UART2 ((uint8_t*) dbg,strlen (dbg));} /*---绕过 EEPROM 继续手动初始化---*/ sprintf (dbg," 绕过 EEPROM,使用手动 RF 设置...\ r\n "); DEBUG_UART2 ((uint8_t*) dbg、strlen (dbg));phhalHW_rc663_WriteRegister(phal,PHHAL_HW_RC663_RC663_REGISTER,PHAL_HW_RC663_RC663_RC663_); phalHW_RC663_WriteRegister REG_TXAMP,0x1F);phhalHW_RC663_WriteRegister(phal,PHHAL_HW_RC663_REG_DRVCON,0x18);} else {sprintf(dbg," EEPROM LOADREG OK。 \ r\n "); DEBUG_UART2 ((uint8_t*) dbg,strlen (dbg));} /* 5. 清除 IRQ 标志 */ phHALHW_RC663_WriteRegister(phal、PHHAL_HW_RC663_REG_IRQ0、0x7F);phalHW_RC663_WriteRegister(phal、PHHAL_HW_RC663_REG_IRQ1、0x7F);/* 6。 启用校准模式 */ phHALHW_RC663_WriteRegister (phAL、PHHAL_HW_RC663_REG_LPCD_OPTIONS、0x02);/* 7. 启动 LPCD_CALIBRATE(0x37 是隐藏的校准命令)*/ phhalHW_RC663_WriteRegister( phal,PHHAL_HW_RC663_REG_COMMAND,0x37);/* 8。 等待 LPCDIRQ */ 做 {phHalHW_rc663_readRegister ( phAL、PHHAL_HW_RC663_REG_IRQ1、& birQ1);} while (! (birQ1 & PHHAL_HW_RC663_BIT_LPCDIRQ)); /* 9. 读取 I/Q 结果 */ phHALHW_RC663_readRegister(phal、PHHAL_HW_RC663_REG_LPCD_RESULT_I、& bValueI);phalHW_rc663_readRegister(phal、PHHAL_HW_RC663_REG_LPCD_RESULT_Q、& bValueQ);/* 10。 存储 */ *pdwLPCDRefValue = (uint32_t)bValueI | ((uint32_t)bValueQ<< 8); sprintf(dbg,"[LPCD] 校准完成:I=0x%02X Q=0x%02X Ref=0x%08X\r\n", bValueI, bValueQ, *pdwLPCDRefValue); DEBUG_UART2((uint8_t*)dbg, strlen(dbg)); return PH_ERR_SUCCESS; } Re: clrc663 lpcd i and q value i getting 0x00 您好,先生, 为了校准 CLRC663 的 LPCD,我们强烈建议您使用NFC Cockpit。 这是一个图形用户界面工具,允许用户以图形方式对天线进行微调,同时进行LPCD 校准(第 4.5 节)。我们鼓励您使用这种方法,因为校准必须根据您自己的设计进行。没有任何手册可以按部就班地完成这一程序。 NFC Cockpit 允许用户在读写器卸载和加载时进行实时校准。 请探讨查看以下天线设计视频系列的第 4 段视频的可能性:NFC 天线设计 | 恩智浦半导体
View full article
复制: 手动输入"Os Isr 处理程序" on Ipcf 本帖复制自 此处 你好我有一个关于在 Vector Davinci 配置器上设置 IPCF 的问题。 环境 我使用的环境如下。 ・Microcontroller : S32K358 ・Vector Davinci configurator classic : 5.30.30 SP1 ・RTD : SW32K3_S32M27x_RTD_R21-11_5.0.0 ・IPCF : SW32K3_IPCF_4.2.0_D2412 背景& 问题 我正试图使用 Vector Davinci configurator classic 为 AUTOSAR 项目配置 "IpcfInstance "的 "Os Isr Handler"。 Os Isr 处理程序 "的 [...] 显示的窗口需要手动输入。 要求是否正确? 如果要求正确,请告诉我需要什么样的路径。 如果要求不正确,我们是否需要其他插件或其他设置? 顺祝商祺! IPCF 优先级:中等 Re: Copy: Manual input of "Os Isr Handler" on Ipcf 嗨,拉杜、 请查看原始主题,因为我们在那里得出了最终结论。 https://community.nxp.com/t5/S32K/Manual-input-of-quot-Os-Isr-Handler-quot-on-Ipcf/td-p/2168682 如果您还有问题,请告诉我。 顺祝商祺! 丹尼尔 Re: Copy: Manual input of "Os Isr Handler" on Ipcf 你好 您可以在下面找到新问题的答案: 问:根据您的回答,在申请 IPCF 时,IPCF 的 OsISR 是否必要? 答:只有当你想在 I nterrupt 模式下使用 osiSR 时,才需要将其添加到 IPCF 中(一个内核触发信号 MU 中断,另一个内核接收它并在回调函数中处理消息)。IPCF 可以在轮询模式下使用,无需配置 IPCF 中断,无需从 IPCF 配置中配置 Os ISR 处理器。在这种情况下,Inter Core Rx IRQ 参数应设置为IPC_IRQ_NONE。 问:用 IPCF 的 osiSR 路径填写上面 " Os Isr " 的 " 参考路径 " 是对的吗? 答:如果图片中出现的这四个IRQ中的一个应用于IPCF,则使用中断来通知另一个内核有数据,然后使用所需的 OSISR 路径手动填充参考路径,如下图所示。 如果配置的中断不适用于 IPCF,则可以使用轮询模式(IPCF 不需要中断),或者在 Os 中为 IPCF 添加专用的中断,并在 IPCF 配置中的 Os ISR 处理程序中进行参考。 另请查阅IPCF_S32K3_4.2.0_User_Manual.pdf第2.2.1章与 NXP RTOS 的集成。 问:如果 IPCF 需要 OsISR,我们对 IPCF 的 OsISR 有参考吗? 答:我想上面的回答也包括这一点,如果不包括,请提供更多细节,因为不清楚。 问:例如,IPCF 设置的 osiSR 的 " Isr 资源参考 " 需要哪种参考资料? 答:"Isr Resource Ref" 不使用 OsISR,您不需要为 IPC 配置任何东西。 如果还有其他问题或不清楚的地方,我们可以召开会议,为您提供 IPCF 配置方面的支持。 顺祝商祺! 丹尼尔 Re: Copy: Manual input of "Os Isr Handler" on Ipcf 来自 Daniel Hermenczi 的意见: " 你好 、 我们有几点需要澄清: 您是否使用 Vector 提供的 AUTOSAR Os? 因为在您分享的图片中,我们看不到操作系统的配置,问题是是否配置了一个或多个 OsISR? 如果你已经配置了它们,那么这可能是一个问题,你需要使用手动选项来选择对已配置的 OsiSR for IPCF 参数 Os Isr Handler 的参考。 以手动配置为例,您需要将高亮显示的路径与您的特定 OsISR 路径一起使用 如果需要更多信息,请告诉我。 顺祝商祺! Daniel" 客户回复: "1.您是否使用 Vector 提供的 AUTOSAR Os? 是的,我使用 AUTOSAR Os。 2.因为在你分享的图片中,我们看不到操作系统的配置,问题是是否配置了一个或多个 OsISR? 是的,我的项目中有以下四种 OsISR 配置。 它们是用于 CAN 通信的 OsISR。 补充问题 根据您的回答,在申请 IPCF 时,IPCF 的 OsISR 是否必要? 用 IPC@@ F 的 osiSR 路径填写上面 " Os Isr Handler " 的 " 引用路径 " 是对的 吗? 如果需要用于 IPCF 的 osiSR,我们对 IPCF 的 osiSR 有参考吗? 例如,OsiSR 的 " Isr 资源参考 " 需要什么样的参考才能进行 IPC F 设置? 谢谢,并致以最崇高的敬意。"
View full article
[S32K3 tool part]:How to use IAR compiler or IAR project to compile S32K3 MCAL project [S32K3 tool part]:How to use IAR compiler or IAR project to compile MCAL project 1.    Abstract      Through regular observation, it has been found that there are still many customers using platforms such as MCAL+IAR, including those using IAR compilers and those directly using IAR IDEs. In fact, when I was working on industrial MCUs in the past, I also particularly liked IAR IDE for its fast compilation speed, high compilation efficiency, and small code generation. However, when I came to auto MCU, I found that its popularity was not very high, and I also noticed that some customers encountered various problems when importing MCAL into IAR. Therefore, I will directly write a tool article on how to use IAR compiler or IAR IDE project to compile NXP S32K MCAL in combination with EB tresos MCAL. This article uses S32K344 combined with RTD600 to illustrate the compilation of MCAL projects using IAR compiler and the direct import of MCAL into IAR IDE projects 2. IAR Complier with S32K3 RTD MCAL project 2.1 S32K3 HW and SW SW32K3_S32M27x_RTD_R21-11_6.0.0 S32K3X4-EVB Based on Dio_TS_T40D34M60I0R0 IAR:IAR EW for Arm 9.70.1 EB tresos29.0.0 2.2 Compile MCAL project steps using IAR compiler CMD method 2.2.1 Copy one RTD MCAL new project Open path C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins Copy Dio_TS_T40D34M60I0R0 , rename it as Dio_TS_T40D34M60I0R0_IAR Fig 1 2.2.2 Complie EB tresos project Use EB tresos tool open the following EB tresos project : C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0_IAR\examples\EBT\S32K3XX\Dio_Example_S32K344\TresosProject Generate code: Fig 2 2.2.3 Vscode open Dio_TS_T40D34M60I0R0_IAR project Use VS code open the following path folder: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0_IAR\examples\EBT\S32K3XX\Dio_Example_S32K344 Of course, you can also directly open this folder path using the command line, as long as you ensure that it is in the same layer path as the. mk and makefile scr Fig 3 2.2.4   Project_parameters.mk modification Mainly modify the following points: TOOLCHAIN = iar IAR_DIR = C:/IAR/ewarm-9.70.1 TRESOS_DIR = C:/EB/tresos_29_0_0 PLUGINS_DIR = C:/NXP/SW32K3_S32M27x_RTD_R21-11_6.0.0/eclipse/plugins The path of IAR must be consistent with the version of IAR software used to ensure that the corresponding IAR compiler can be found. Fig 4 2.2.5   Check_build_params.mk modification Add the following content to check_build_params.mk: else ifeq ($(TOOLCHAIN),iar) ifeq ("$(wildcard $(IAR_DIR)/arm/bin/iccarm.exe)","") $(error Invalid path set to the IAR compiler. \ The provided path: from project_parameters.mk IAR_DIR=$(IAR_DIR) is invalid!) Endif Fig 5 2.2.6        Makefile modification   Makefile need the following 5 points modification: (1)Compilier change ifeq (${TOOLCHAIN},iar) CC := $(IAR_DIR)/arm/bin/iccarm.exe LD := $(IAR_DIR)/arm/bin/ilinkarm.exe AS := $(IAR_DIR)/arm/bin/iasmarm.exe # Intel Hexadecimal Flash image tool GENHEX := $(IAR_DIR)/arm/bin/ielftool.exe HEX_OPTS := --ihex OUT_OPTS := -o endif Fig 6 (2) SRC_DIRS  add TOOLCHAIN SRC_DIRS += $(foreach mod,$(MCAL_MODULE_LIST),$(PLUGINS_DIR)/$(mod)_$(AR_PKG_NAME)/src) \ $(foreach mod,$(MCAL_MODULE_LIST_ADDON),$(PLUGINS_DIR_ADDON)/$(mod)_$(AR_PKG_NAME_ADDON)/src) \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src/m7 \ $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/startup/src/m7/$(TOOLCHAIN) Fig 7 (3) Linker file  modification ifeq ($(LOAD_TO),flash) ifeq (${TOOLCHAIN},iar) LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/${TOOLCHAIN}/linker_flash_$(DERIVATIVE_LOWER).icf else LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_flash_$(DERIVATIVE_LOWER).ld endif else ifeq (${TOOLCHAIN},iar) LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_ram_$(DERIVATIVE_LOWER).icf else LINKER_DEF:= $(PLUGINS_DIR)/Platform_$(AR_PKG_NAME)/build_files/$(TOOLCHAIN)/linker_ram_$(DERIVATIVE_LOWER).ld endif endif Fig 8 (4) Complier options change ifeq (${TOOLCHAIN},iar) ################################################################################ # iar Compiler options ################################################################################     clib        := $(IAR_DIR)/arm/lib     CCOPT           +=  --cpu=Cortex-M7 \                         -DAUTOSAR_OS_NOT_USED \                         -DUSE_MCAL_DRIVERS \                         --fpu=FPv5-SP \                         --cpu_mode=thumb \                         --endian=little \                         -e \                         -Ohz \                         --debug \                         --no_clustering \                         --no_mem_idioms \                         --do_explicit_zero_opt_in_named_sections \                         --require_prototypes \                         --no_wrap_diagnostics \                         --diag_suppress=Pa050 \                         $(MISRA) \                         -D$(PLATFORM) \                         -D$(DERIVATIVE) \                         -DIAR \                         -DUSE_SW_VECTOR_MODE  \                         -DENABLE_FPU \                         -DD_CACHE_ENABLE \                         -DI_CACHE_ENABLE                             LDOPT           :=  --entry _start \                         --enable_stack_usage \                         --skip_dynamic_initialization \                         --no_wrap_diagnostics \                         --cpu=Cortex-M7 \                         --fpu=FPv5-SP                             ASOPT           :=  $(ASOPT) \                         --cpu Cortex-M7 \                         --cpu_mode thumb \                         -g \                         -r \                         -DMULTIPLE_CORE endif Fig 9 Fig  10 So how did these IAR compilation options come about? You can refer to the release note of RTD600, which contains corresponding descriptions Fig 11 (5) Elf related change ifeq (${TOOLCHAIN},iar) %.elf: %.o $(LINKER_DEF)               @echo "Linking $@"               @$(LD) $(ODIR)/*.o $(LDOPT) --config $(LINKER_DEF) --map $(ODIR)/ -o $(ODIR)/$@@               @$(GENHEX) $(HEX_OPTS) "$(ODIR)/$(ELFNAME).elf" "$(ODIR)/$(ELFNAME).hex" else %.elf: %.o $(LINKER_DEF)               @echo "Linking $@"               @$(LD) -Wl,-Map,"$(MAPFILE)" $(LDOPT) -T $(LINKER_DEF) $(ODIR)/*.o -o $(ODIR)/$@@               @$(GENHEX) $(HEX_OPTS) "$(ODIR)/$(ELFNAME).elf" $(OUT_OPTS) "$(ODIR)/$(ELFNAME).hex" endif Fig 12 2.2.7   Build to generate elf Commander: make clean make build to generate the elf files: Fig 13 After generation, the elf can be burned onto the S32K344 EVB board for testing. The test results show that the onboard red light is flashing, indicating that the IAR compiler can work in command-line mode. 3. Import RTD MCAL to IAR IDE project This chapter explains how to create an IAR IDE project and import MCAL drivers to implement S32K3 MCAL combined with EB tresos for running. 3.1 MCAL IAR IDE project 2 methods Difference between two methods and how to import MCAL drivers: (1) Directly copy the RTD MCAL driver to the IAR IDE project directory (2) Connect the IAR IDE project driver to the original RTD driver path Fig 14 3.2 MCAL IAR IDE project import steps 3.2.1 create the new RTD MCAL IAR project folder    Create a new folder, named as:S32K344_DIO_MCAL_RTD600_IAR 3.2.2 create the sub folder for IAR project       Generate:EB tresos project code       Include:app related include file       Mcal: mcal driver copy from RTD       src: project main file       Tresos_Project:EB tresos project Fig 15 3.2.3 create EB tresos project (1) Create the EB tresos project in the followign path:  S32K344_DIO_MCAL_RTD600_IAR\Tresos_Project\Mcal_Dio_S32K344_RTD600_IAR (2)Add modules: BaseNXP, Dem, Dio, EcuC, Mcu, Platform, Port, Resource (3)Copy RTD xdm files in the following path: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\TresosProject\Dio_Example_S32K344\config to: S32K344_DIO_MCAL_RTD600_IAR\Tresos_Project\Mcal_Dio_S32K344_RTD600_IAR\config (4)EB tresos Generate project EB tresos code will be generated to folder: S32K344_DIO_MCAL_RTD600_IAR\Generate Fig 16 3.2.4 Copy RTD related drivers to IAR project folder (1) BaseNXP: header, include, src (2)Det:  include, src (3)Dio:  include, src (4)Mcu:  include, src (5)Platform: build_files, include, src, startup (6)Port: include, src (7)Rte: include, src Copy RTD folder to IAR project is one method, if don’t want to copy the file, also can use the linker to add the RTD install path drivers directly. Fig 17 3.2.5 IAR IDE create IAR project   (1) Project->Create new project   (2) In the IAR project, add group   The related folder in project can be structured like the fig 18, which contains:   Generate: Include and src->EB tresos project generate code   Mcal:  Base, Det, Dio, Mcu, Platform, Port, Rte->Mcal driver   Src: Main.c->project main code    (3) Add RTD mcal related drivers to IAR project The RTD MCAL related driver files can be directly downloaded from the RTD installation path or copied to a folder in the IAR project, and both methods yield the same result. Fig 18 (4)IAR project platform folder added result: Fig 19 (5)main code add Main.c can copy from path: C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\examples\EBT\S32K3XX\Dio_Example_S32K344\src to S32K344_DIO_MCAL_RTD600_IAR\src Comment:  //#include "check_example.h"  // Exit_Example(TRUE); 3.2.6 IAR project options configuration (1)General options->Target->Device->NXP S32K344 (2)C/C++ Complier->Preprocessor Addional include directories: Use IAR project folder drivers which copied from RTD install path, the directories are: $PROJ_DIR$\Generate\include $PROJ_DIR$\mcal\BaseNXP_TS_T40D34M60I0R0\header $PROJ_DIR$\mcal\BaseNXP_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Mcu_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Rte_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\startup\include $PROJ_DIR$\mcal\Det_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Dio_TS_T40D34M60I0R0\include $PROJ_DIR$\mcal\Port_TS_T40D34M60I0R0\include $PROJ_DIR$\include If use the RTD install path drivers, use the following directories: $PROJ_DIR$\Generate\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\BaseNXP_TS_T40D34M60I0R0\header C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\BaseNXP_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Mcu_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Platform_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Rte_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Platform_TS_T40D34M60I0R0\startup\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Dio_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Port_TS_T40D34M60I0R0\include C:\NXP\SW32K3_S32M27x_RTD_R21-11_6.0.0\eclipse\plugins\Det_TS_T40D34M60I0R0\include $PROJ_DIR$\include Defined symbols: S32K3XX S32K344 IAR USE_SW_VECTOR_MODE D_CACHE_ENABLE I_CACHE_ENABLE ENABLE_FPU Extra options: --no_clustering --no_mem_idioms --do_explicit_zero_opt_in_named_sections --require_prototypes --no_wrap_diagnostics Languate 1:   Check Require prototypes Diagnostics Suppress these disgnostics: Pa050 Fig 20 (3)Linker: Two points need to be added: $PROJ_DIR$\mcal\Platform_TS_T40D34M60I0R0\build_files\iar\linker_flash_s32k344.icf Library->Entry symbols: _start Fig 21 (4)Debugger Setup: PE micro, run to main Extra Options: Use command line options: --drv_vector_table_base=__ENTRY_VTABLE Fig 22 3.2.7  Build IAR project Project->Rebuild All Fig 23 3.2.8  Test result Download and debug result: Fig 24 After downloading and running, the red led is blinking on the board, indicating that the IAR IDE MCAL import method project has been successfully run.
View full article
S32K混音器 大家好, 最近,我们完成了S32K Sound Mixer的参考代码和演示,很高兴在这里分享这个演示。 此演示的一些主要特点: - 基于 S32K344/S32K148 + 音频编解码器 SGTL5000 + QSPI 闪存 MX25L6433 的演示硬件。 - 基于 S32K3 RTD RTM 2.0.0 和 S32K1 RTD RTM 1.0.0 的演示软件。 - Demo中提供了2种混音算法的实现代码,以及相应的音频素材和codec SGTL5000驱动。 - 演示展示了如何通过音频存储和播放过程对 QSPI 闪存及其 AHB 访问进行编程。 - 演示使用单声道音频作为处理源,并通过 SAI HW FIFO 组合(Line_Mux)功能输出立体声音频(I2S 格式),几乎没有额外成本。 HMI/Cluster 应用程序需要同时播放多个音频源(通常是警告声音),这就带来了混音能力的要求。但是,S32K1/3 缺乏此 HW/SW 功能支持。 结合本地重点客户的需求,并考虑到潜在客户的需求,我们计划启用一个带有预定外设的SW混音器,以增强S32K系列音频混音能力。在 S32K1/3 上使用/移植应该很容易,并使用 QSPI 闪存(AHB 模式读取)来存储音乐。 附件混音器包包括基于 S32K344 EVB 和 S32K148 T-Box RDB 的 2 个混音示例,以及一些介绍此实现和快速入门指南的幻灯片。 谢谢并欢迎您的任何评论。 顺祝商祺! 李帅林 回复: S32K 混音器 你好,S32K3 RTD RTM2.0的下载连接在哪里?我安装的S32K3 RTD 4.4无法打开项目
View full article
Linux Embedded Challengeプロジェクト - 2014 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 1.歩行者用スポットライト機能付きアダプティブダイナミックヘッドライト-eVisionによる チームメンバー: バラバン・ヴァレリウ - マスター、アドバンスト・マイクロエレクトロニクス、エレクトロニクス、UPB Voicu Tudor Alexandru - 学士、応用電子工学、電子工学、UPB Stanescu Sebastian - 学士、テレコムネットワーキングおよびソフトウェア、UPB 簡単な説明: 夜間の事故と夜間の事故の間の死亡率が高いため、技術開発のために多くの研究が行われています。 夜間にドライバーの視界を広げ、これが避けられなかった場合の事故による損傷を減らすため。ザ アダプティブヘッドライト機能は、暗い場所、特に曲がり角でさらに見るのに役立ちます:コーナリングライト ヘッドライトを進行方向に回転させ、CPUによって計算された回転角度で、できるだけ多くの道路を照らします 可能な限りの面積 興味深い解決策は、潜在的な危険を具体的に照らすLEDビームであるスポットライト照明機能です。 近赤外線カメラが道端の鹿や道路上の歩行者を検出した場合、それらを短時間照らすことができます メインビームで覆われた通常の領域を超えて、スポットライトによってドライバーに危険の可能性に注意を向けます。 プレゼンテーション: eVisionPresentation.pdfご相談ください。 ドキュメンテーション: eVisionDoc.pdfご相談ください。 コードソース https://github.com/izzi/app-evision https://github.com/izzi/meta-evision 2. DriverVehicleインタラクションのための音声コマンドインターフェース - by She# チームメンバー: ユリア・ネアゴエ - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Mihaela-Anca Sorostinean - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー 簡単な説明:     自動車および通信領域における継続的な技術進歩の文脈では、ドライバー 責任は、単に車を制御することから、によって提供される多数のガジェットとの相互作用に変わりました。 生産者。このプロジェクトの目的は、ドライバーが制御する可能性を提供するインターフェイスを設計することです ドライバーが彼の注意を集中することを可能にするために、音声コマンドによる車の非重要な機能の一部 道路上では、車との快適なコミュニケーション手段も備えています。     私たちは、ラジオ、窓、気候、電話などのいくつかの基本的な機能の音声認識システムを開発しました それをワンドボードに実装しました。また、認識されたグラフィカルインターフェイスをユーザーに提供します 彼の車両との相互作用を強化するためのコマンド。 プレゼンテーション: ShePresentation.pdfご相談ください。 ドキュメンテーション: SheDoc.pdfご相談ください。 コードソース She#_Project_Source.zipをご覧ください 。 3. 運転制御ソフトウェア - by FreeSoftwares チームメンバー: Petrosanu Adrian-Sabin - コンピュータサイエンス、UPB Birsan Nicoleta Cosmina - コンピュータサイエンス、UPB Radoi Ioana Gabriela - コンピュータサイエンス、UPB 簡単な説明: 「ドライビングコントロールソフトウェア」は、オートマチックギアボックスを制御するためのソフトウェアです。このプロジェクトは、動作のシミュレーションで構成されています ワンドボードのオートマチックギアボックスの。オートマチックギアボックスは、自動車のトランスミッションの一種です。 車両の動きに合わせてギア比を自動的に変更します。 プレゼンテーション: FreeSoftwaresPresentation.pdfご相談ください。 ドキュメンテーション: FreeSoftwaresDoc.pdfご相談ください。 コードソース Freesoftwares_Project_Source.zipをご覧ください 。 4. 自動駐車場 - ATM利用 チームメンバー: Mihai Coca - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー グルジアのアンドレイ - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Hiji Iulian - コンピュータサイエンスと軍事情報システム、軍事技術アカデミー Shortの説明: 多くの企業が、 その分野での作業を 特定の使用例:駐車場。この目的 プロジェクトは、ドロップオフできるコンセプトカーを設計することです その所有者によって縁石で 、スポットパークに入るために独自のデバイスに残されました。このプロセスを逆にすることさえできます 所有者が行く準備ができているとき、車はスポット公園を離れて、そのを満たすために自分自身で 縁石に再びキーホルダー。 ドキュメンテーション: ATMにご相談くださいDoc.pdf コードソース ATM_Project_Source.zipをご覧ください 。 5.衝突検出-Beer2.0による チームメンバー: Nitu Adrian - コンピュータサイエンス、UPB 簡単な説明: 私たちのプロジェクトの目的は、車に前方の道路の感覚を提供し、予防策を講じることができるようにすることです 衝突;このようにして、道路での事故を減らしたいと考えています。さまざまなハードウェアから信号と情報を収集します ドライバーに警告するか、ドライバーを保護するために重要な操作を行うために車を即座に制御します 生命を脅かす出来事から。 フリースケールのカップカーには、ワンドボードと2台のUSBカメラが装備され、環境を追跡できます。初期処理後 オブジェクトトラッキングは、リモートコントロールによるヒューマンインタラクションを組み込みます。このプロジェクトでは、単純な警告システムを信じています および/またはブレーキングは、概念の証明として十分です。 プレゼンテーション: ご相談くださいBeer20Presentation.pdf ドキュメンテーション: ご相談くださいBeer20Doc.pdf コードソース https://bitbucket.org/adriannitu92/freechallenge 6.サブバンド正規化filtered-X LMSアルゴリズムを使用したフィードフォワード適応型ノイズキャンセリング - Brainiacsによる チームメンバー: Cristian Monea - 電気通信および情報技術、エレクトロニクス、UPB Madalin Zaharia - 電気通信および情報技術、エレクトロニクス、UPB 簡単な説明 このプロジェクトでは、サブバンド正規化フィルタリングX LMS(NFXLMS)に基づくフィードフォワード適応型ノイズキャンセレーション(ANC)アルゴリズムを提案します。 適応アルゴリズムの使用には、固定FIRやIIRフィルターなどの単純なフィルタリングアルゴリズムよりも利点があります。また、ノイズは 車の環境は、スペクトル分布、平均、分散など、その特性の一部を保持するため、静止していると見なすことができます。 車の騒音キャンセリングアプリケーションで適応フィルターを使用できるようにします。 フィードフォワードシステムは、フィードバックシステムよりも効率的である必要があります。この場合、コヒーレントなリファレンスノイズ入力がその前に検出されます キャンセルスピーカーを通過して伝播します。 したがって、アルゴリズムは2つのセンサー(マイク)をシミュレートします:キャンセルされる一次ノイズを測定する基準センサー。 とエラーセンサー。 プレゼンテーション: ご相談くださいBrainiacsPresentation.pdf ドキュメンテーション: ご相談くださいBrainiacsDoc.pdf Linux Embedded Challenge 2014 (英語)
View full article
Example S32K14x SRAM ECC Injection ******************************************************************************** Detailed Description: This example shows SRAM ECC injection. By default, a double-bit ECC error is injected on read access of a location in SRAM_U region. This can be changed with the SRAM_U and DOUBLE_BIT macros. The errors can be detected by both the ERM and MCM modules and the corresponding interrupts can be called. Although only ERM is needed, for demonstration purposes, the MCM interrupt is enabled as well with a lower priority than the ERM interrupts. The ERM interrupts that are called first disable the injection mechanism so that subsequent errors can not be detected during a stack read access. The default S32 Design Studio start_up file copies the vector table to the SRAM_L region. To be able to inject ECC errors in this SRAM region and call the interrupts, the copying is disabled by __flash_vector_table__ symbol  declared in the start_up.h file and defined in the S32K144_64_flash linker file. -------------------------------------------------------------------------------------------- Test HW: S32K144EVB-Q100 MCU: S32K144 0N57U Debugger: S32DSR1 Target: internal_FLASH ********************************************************************************
View full article
i.MX 上的 wxWidgets <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 组装 wxWidgets 版本 2.8。使用 TinyX。由 4 英寸 - 8 英寸的触摸屏供电。
View full article