Multi Source Translation Content

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

Multi Source Translation Content

Discussions

Sort by:
Load some data into the Data RAM memory in MC33PT2000? MC33PT2000, During program execution, need to modify some data in DATARAM. While debugging, it was discovered that rewriting all 192 data  to DATARAM was the only effective method. Is it possible to change a specific data in DATARAM Using a simple method? How can the code be written? Solenoid Controller Re: Load some data into the Data RAM memory in MC33PT2000? Thanks! Re: Load some data into the Data RAM memory in MC33PT2000? Dear Hongyu, please use the PSC simulator. Please check the videos in this link. Please also check the section 8.1.2.2 in the PT2000 datasheet. With Best Regards, Jozef Re: Load some data into the Data RAM memory in MC33PT2000? Thank you! But, I didn't describe it clearly. Actually, I want to enable real-time data exchange between the microcontroller (for example: S32K144) and the MC33PT2000 (writing data to DATARAM). What method should I use? Re: Load some data into the Data RAM memory in MC33PT2000? Dear Hongyu, the DataRAM access is described in the section 2.8 in the PT2000SWUG attached. Please refer to it. With Best Regards, Jozef
View full article
MPC5777C-Parallell accesses through EBI Hello! I am working with a MPC5777C in dual core configuration. While measuring the hardware resource contention interference in timing, my teammate noticed a 40% increase in task execution time when both cores were acessing the EVB's external SDRAM through the EBI. The on-chip SRAM has two Platform RAM Controllers that allow parallel memory acessess, atenuating inter-core interference when each controller is allocated to different cores. I know that the MPC5777C does not have two EBIs, but is there a way to decrease intercore interference coming from the EBI? Best regards,  Matheus Re: MPC5777C-Parallell accesses through EBI This answers my question. Thank you, David! 🙂 Re: MPC5777C-Parallell accesses through EBI It is expected to use internal SRAM memory (internal SRAM is split into two halves according address line 18 (see Table 9-2. XBAR slave port assignments). It can be beneficial if one core accesses slave port 2 and second core accesses slave port 4 (or otherwise) as both accesses goes in parallel. You can split EBI data bus to two 16-bit halves, but it does not help as it will be sequential access anyway. There is only one dedicated XBAR slave port for EBI module what means only one master can access EBI at a time. Re: MPC5777C-Parallell accesses through EBI Hello! I think I did not use the correct reply button previously, so I believe you did not receive a notification. Sorry for that. Could you evaluate the previous reply that I made, please? Best regards, Matheus Re: MPC5777C-Parallell accesses through EBI Hello! In my understanding, your solution will not atenuate shared resources competition impact on timing. It will just define which core will take more interference by "losing" the resource competition more times (i.e., having lower access priority). In the example that I mentioned, the on-chip SRAM has two Platform Memory Controllers that could be allocated individually for each core. This configuration leads to lower interference because I would be dedicating independent controllers to individual cores. I was expecting for the EBI somethig like using 16 bits of the bus for one core and 16 bits for other. I just need to make 16 bits access to the EBI, so if it could be possible, would work for me. Best regards Re: MPC5777C-Parallell accesses through EBI SDRAM cannot be connected to the EBI module, I suppose you mean SRAM. Pay attention to XBAR priority, choosing of round-robin arbitration scheme would solve this issue and both cores would have equal chance to access the slave. Or you may set up fixed priority to define higher priority for one core over other (or other master).
View full article
i;MX8MP LVDS クロック極性 皆さん、こんにちは #i.MX8MPアプリケーションプロセッサを使用して、カスタムボードの1つでLVDSパネルを駆動しています。パネルは現在、期待どおりに表示されません。テキストはほとんど読めず、赤い画面を表示すると黒い(動く)ちらつきが見られます。パネルのベンダーに問い合わせたところ、LVDSクロックの極性を反転させることを提案しました(現在の設定に応じて、立ち下がりエッジから立ち上がりエッジへ、または立ち上がりエッジから立ち下がりエッジへ)。 次に、#i.MX8MPのリファレンスマニュアルを見ました。LVDS インターフェイスのクロック極性に関連するレジスタ/情報は見つかりませんでした。時計の極性についての情報はありますか?デフォルト設定は何ですか?これは構成できますか? 代わりにプラスとマイナスのクロック信号を入れ替えようとしましたが、うまくいきません(電圧レベルが異なるため、これは予想外ではありません)。また、LCDIFのピクセルクロックの極性を変更してみました。しかし、その後、パネルはまったく同じに見えました。誰かが私たちの問題をトラブルシューティングまたは修正するための他の提案を持っていますか? よろしくお願いいたします。 ヨッシー
View full article
PCA9509P VOL on PORT A Hello team, What is is the meaning of "Iload=100µA"  in table 6? Is the test circuit shown in Figure 20, with RL=1.35kohms  used for this characterization? Best regards. Sylvain Re: PCA9509P VOL on PORT A Hello Thomas, As the solution will  be implemented in a design, I need an "official answer" from NXP. The answer “I don't think so” is not safe from my point of view  :-). An answer starting with “yes/no 100µA is a strict requirement” will be appreciated. Regards Re: PCA9509P VOL on PORT A Hello Sylvain, I do not think that 100μA is a strict requirement. Please try increasing the pull-up resistor on Port A to reduce the current and check if your VOL improves while keeping rise times within acceptable limits for your application. BRs, Tomas Re: PCA9509P VOL on PORT A Hello, I need some recommandations about Pullup on port A: In paragraph 6.4.1.2, it's written that he pull-up resistor on the A side of the PCA9509P should be chosen to provide at least 100 μA of pull-up current. Is-it mandatory to respect this condition? In my application the VIL of of the master is 0.3XVCC where as the VOL (side A)of PCA9509P is  0.25VCCA (maximum value). The power supply is 1.8V. so VIL(min)=0.3*1.8=0.54V and VOL(max)@100µA=0.25*1.8 =0.45V The margin is : VIL(min)-VOL(max)= 0.54-0.45=0.09V. This margin is very small, so I think that if I reduce  current in port A, the VOL of Port A will be also reduced and the margin will increased. isn't it? Sylvain     Re: PCA9509P VOL on PORT A Hello Sylvain, The PCA9509P is relatively old device and I did not find the relevant test details/results. However, I assume that the "Iload = 100µA" in Table 6 specifies the test condition under which the VOL on Port A was characterized. When the device is driving the output low, it must maintain the VOL value while sinking a current of 100µA. I do not think the circuit in Figure 20 was used directly for the VOL test in Table 6. The load current would be in mA range which significantly exceeds the 100µA condition specified for VOL characterization. BRs, Tomas
View full article
NHS3100 app_demo_dp_url updated NDEF message Hello. I'm using the app_demo_dp_url as a baseline and updating it with a sensor reading. The sensor reading takes aprox 200ms (integration time).  How can I update the NDEF message and "notify" the reader (smartphone) that an updated message is present? With measurement time above 50ms my phone stop reading properly the tag and returns "empty tag". Thanks in advance  Re: NHS3100 app_demo_dp_url updated NDEF message Hi, The embedded firmware is responsible for creating a valid NDEF message and making it available through the NFC interface. These actions must be completed before the tag reader starts reading the NFC memory. The duration between enabling the NFC field and reading the NFC memory varies between brands and models and can be as low as ~16ms. The NHS3100 IC cannot delay this reading to allow for more time to process data, as the NFC controller is a type 2 tag. Regards, Eduardo. Re: NHS3100 app_demo_dp_url updated NDEF message Hello Eduardo Thanks for your message. I just updated my workspace to vesion 12.6 and I'm using the app_demo_label_signedurl example as a starting point.  Instead of the  "TMeas_Measure" funtion I'm using a custom funtion that retrieves Lux from an Ambient light sensors. The integration time on this sensor should be 100ms. Plus some ms for a convertion time.... I get someting close to 130ms before I'm able to retireve the sensor data out.  After the data is available I'm updating the url with this retrieved data (similar to the Url_SetTemperature((unsigned int)sTemperature);).. When I tap the device with my phone I get an "empty tag". I believe that this is due to the amount of time that I spent reading the sensor Could you suggest a workaround? Is it possible to prepare a dumy msg and than update it with valid content? Thanks Re: NHS3100 app_demo_dp_url updated NDEF message Hello @martinsmarco Hope you are doing well. app_demo_dp_url is an old firmware and it is now obsolete; this application was removed from the latest NHS3100 releases.  app_demo_label_signedurl supersedes the app_demo_dp_ur application firmware. Please consider upgrading the SDK version to the latest version available in the NHS3100 Product Page > Software section. Regards, Eduardo.
View full article
LH7A404の2つのモデルの違いは何ですか? こんにちは、尊敬されるNXPチーム。32ビットARM9TDMI ™ RISC Core Processorについて知りたいのですが、「LH7A404-N0F 000 B3」と「LH7A404-N0E 000 B3」の違いは何ですか?同じ意味で使用できますか?
View full article
解锁看门狗后发生硬故障(KEA128) 停止后,我将解锁看门狗并在下一行重新配置它。然而,解锁 MCU 时出现硬故障。如何防止发生硬故障? Kinetis EA系列MCU 回复:解锁看门狗后出现硬故障(KEA128) 从停止模式唤醒后,我需要再次配置看门狗刷新。此时,我遇到了一个严重故障。当我在进入停止模式之前进行配置时,没有看到这种情况。
View full article
error when build linux kernel with kvm Hello Community, I want to build linux kernel with kvm feature, but I met some problems: implicit declaration of function '__tlbi_ipas2e1is', and also '__tlbi_vmalls12e1is' and '__tlbi_alle1is'. How can I fix this problem? Re: error when build linux kernel with kvm I'm not working with it. It shows kvm initiation failed at kernel starting. Re: error when build linux kernel with kvm Hello, I have the same question with you, it seems the official release of S32G does not support KVM. Are you still working on it? have you solved it? Re: error when build linux kernel with kvm Hello @stedylan, There is no current support from NXP to use KVM in the S32G3, I'm sorry for the inconveniences. In theory the A53 cores could support KVM (as mentioned in this article https://lwn.net/Articles/557132/) but the implementation should be on your side.  What I can recommend is to try using the ubuntu build, you follow the steps in section 3.1.3 BSP Ubuntu Build of the user manual [Linux BSP 40.0 User Manual for S32G3 platforms], you might be able to enable KVM more easily in that configuration. If the KVM is not specifically required I can recommend also traying Linux containers, you can learn more abut them in section 24 Virtualization of the same document. And the Xen Hypervisor you have already mentioned. Again, I apologize for the inconveniences. Let me know if this information was useful.  Re: error when build linux kernel with kvm   Hello alejandro_e:  Thank you for your reply. Last I was using bsp 38, and I update yocto version to BSP40, and find this patch https://lists.yoctoproject.org/g/linux-yocto/message/14190 , finally build successfully. But I met another problem when init kvm driver: kvm [1]: HYP mode not available. I'm using S32G399. I read the manual, it doesn't show any information about kvm but xen.  Does S32G399 not support kvm? If support, how can I fix this problem. And the manual only shows xen not kvm, why not using kvm instead xen?  Thanks! Re: error when build linux kernel with kvm Hello @stedylan , Checking the latest BSP user manual (BSP41) I don't see anything relevant related to KVM, can you provide more details about your setup? What is the BSP version you are using? Are you working with manual build or Yocto build? Are you working with the S32G2 or S32G3? What are the steps you are following to add KVM to your kernel? Thanks in advance for the information, Best regards
View full article
Does i.MX8M and plus series CPU support IEEE1588 V2? Does i.MX8M and plus series CPU support IEEE1588 V2? i.MX 8M | i.MX 8M Mini | i.MX 8M Nano Re: Does i.MX8M and plus series CPU support IEEE1588 V2? Thanks for your quickly reply! Re: Does i.MX8M and plus series CPU support IEEE1588 V2? Hi cyesman: The i.MX 8M family can support IEEE 1588V2, the reference manual says IEEE 1588 message formats can encapsulated with the newer 1588v2 directly in Ethernet frames (layer 2.) You can refer to i.MX Linux Reference Manual  for the implementation. Section 4.2 ENET IEEE-1588   Please also note that iMX8M family support 1588V2 2-step , but not support 1-step. see below link for more details Can the i.MX8M (or 8M Plus) support 1588v2 1-Step? - NXP Community Regards Daniel
View full article
Debian 12 SDK Hello, We have read that NXP has released a new version based on Debian 12 (kernel 6.6.3) for i.MX processors We want to use it in our own design based on i.MX8m plus, so we need to port uboot and kernel. Could you please help us to find out how to get the toolchain, rootfs, uboot and kernel source code ? kind regards and thank you Angel Re: Debian 12 SDK Hi Chavira, Thank you very much for your help. This could be an option, but we are also considering building the toolchain from NXP release 6.1.22_2.0.0, as this release includes gcc 12.2. Both Debian 12 and gcc 12.2 include glibc 2.36, and this is an important point when our customers need to cross-compile their FW. Best regards Angel Re: Debian 12 SDK Hi @AngelF! Talking with the internal team I got the next answer: To cross-compile applications in standalone mode, users can use aarch64-linux-gnu-gcc compiler, which is installed by command "sudo apt-get install -y crossbuild-essential-arm64 gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu" on Ubuntu host. Best Regards! Chavira Re: Debian 12 SDK Hi Chavira, Yes, I can find aarch64-linux-gnu-gcc and glibc in the container, but I was trying to generate the whole toolchain instead of copying file by file. When installing NXP yocto firmware, we can use the populate_sdk command to generate the full toolchain and we can deploy to customers in a "professional" way. So, with Debian 12, is it possible to generate a complete toolchain or do we have to go file by file? Best regards and thank you Angel Re: Debian 12 SDK HI @AngelF! According with previous cases of the same topic. After installing flex-builder and setting up compiling environment, you could find toolchain(GCC) is deployed in /usr/bin folder. $ which aarch64-linux-gnu-gcc /usr/bin/aarch64-linux-gnu-gcc Glibc is deployed in /usr/aarch64-linux-gnu/lib/ folder. If the tool chain doesn´t exist please let me know. Best Regards! Chavira Re: Debian 12 SDK Hi Chavira, Thank you very much for your help. My host is ubuntu 24.04, so I follow steps and now I have everything ready to generate Debian images inside a docker container. Now we need to be able to offer our customers a toolchain so that they can cross-compile their applications in standalone mode aoutside the container. So we would like to be able to generate the toolchain in the same way as we generate it with yocto (populate_sdk command). How can we get the toolchain using Flexbuild? Best regards and thank you Angel Re: Debian 12 SDK HI @AngelF! Thank you for contacting NXP Support! You can see all the documentation available for Debian in the links below: https://www.nxp.com/design/design-center/software/embedded-software/linux-software-and-development-tools/nxp-debian-linux-sdk-distribution-for-i-mx-and-layerscape:NXPDEBIAN https://www.nxp.com/docs/en/user-guide/UG10155.pdf Best Regards! Chavira
View full article
s32k312 hse write OTP cant return successfully Hi NXP,    i use hse api to set OTP attribute, function,  eg.  use ' Set_Attr(HSE_DEBUG_AUTH_MODE_ATTR_ID, sizeof(hseAttrDebugAuthMode_t), (void *)&mode); ' to set a value . when execute this api, the program halted and not return, after mcu reset, the value has been written.   when call the api again, or use read operation, it returns  aa55a21c or read value ok, it never crashed.   my question is, what cause hse set_attr()  not return successfully. 回复: s32k312 hse write OTP cant return successfully i found this already disscused in community. the reason is  UTEST in plash0. Re: s32k312 hse write OTP cant return successfully Hi @victory  I recommend you to check out the S32K3 MCUs for General Purpose HSE Demo Examples. Here you will find different use-case scenarios and examples to showcase the capabilities of the HSE FW in different devices. Also, you will find the implementation of the SetAttr() function. Re: s32k312 hse write OTP cant return successfully thansks, the error return 0xAA55A21C is due to missing some precondition.  how about call Set_Attr cause cpu halt?  i only do 2 steps 1.  use HSE_install_FW project  to install hse fw and check version ok. 2. use my app , just run Set_Attr(HSE_DEBUG_AUTH_MODE_ATTR_ID,...), then mcu halted and have to reset, then check this attr is written. 3. run Set_Attr(HSE_EXTEND_CUST_SECURITY_POLICY_ATTR_ID, ...) , then mcu halted as step2, after reset, check this value is written. same as write ADKP. etc, i've met this in 2 samples, and every write operation always go to mcu halt.  i think is there any precondtion to set?  here is my hse wrapper function, since my SDK is hse_ip servicerequest , not hse_send in most examples. static const uint8_t MUIF = 0; static hseSrvDescriptor_t gHseSrvDesc[HSE_IP_NUM_OF_CHANNELS_PER_MU] = {0}; static const Hse_Ip_ReqType gSyncTxOption = {HSE_IP_REQTYPE_SYNC, NULL, NULL, 1000000}; hseSrvResponse_t Set_Attr(hseAttrId_t attrId, uint32_t attrLen, void *pAttr) {     hseSrvResponse_t ret = HSE_SRV_RSP_GENERAL_ERROR;     hseSrvDescriptor_t *pHseSrvDesc = NULL;     uint8_t ch = HSE_IP_INVALID_MU_CHANNEL_U8;     ch = Hse_Ip_GetFreeChannel(MUIF);     if (HSE_IP_INVALID_MU_CHANNEL_U8 != ch)     {         pHseSrvDesc = &gHseSrvDesc[ch];         memset(pHseSrvDesc, 0, sizeof(hseSrvDescriptor_t));         pHseSrvDesc->srvId = HSE_SRV_ID_SET_ATTR;         pHseSrvDesc->hseSrv.setAttrReq.attrId = attrId;         pHseSrvDesc->hseSrv.setAttrReq.attrLen = attrLen;         pHseSrvDesc->hseSrv.setAttrReq.pAttr = (HOST_ADDR)pAttr;         ret = Hse_Ip_ServiceRequest(MUIF, ch, &gSyncTxOption, pHseSrvDesc);     }     return ret; } Re: s32k312 hse write OTP cant return successfully Hi @victory  The return value 0xAA55A21C means HSE_SRV_RSP_NOT_ALLOWED. This status means the operation is not allowed because of some restrictions (in attributes, life-cycle dependent operations, key management, etc.). As the data is aready written in the UTEST Sector, as an OTP (One Time Programmable), iit only allows append new data or configuration and read data. Erase and overwrite operations are not allowed. BR, VaneB
View full article
[MPC5777C] Interrupts are not called after a external ISR call Hello, all. I am using MPC5777C in vehicle controller. and I am building my project by referring to NXP's example. The problem is that the external ISR executes once, the external ISR doesn't executes again. I would like to know a method I found is correct. Below is the mechanism I analyzed why the ISR does not work again. 1. After ISR, Writing to the INTC_EOIR_PRC for sending the end signal of the servicing of the interrupt request on epilog. 2. In case of PIT interrupt, after writing INTC_EOIR_PRC, INTC_CPR_PRC is changed automatically in epilog. and then, PIT ISR will executes again after PIT timeout interrupt arise. 3. In case of external interrupts, INTC_CPR_PRC is NOT changed in epilog. and external ISRs do not executes again. I have confirmed that adding writing INTC_EOIR_PRC in the external ISR makes the ISR continuously work well. To summarize, Writing INTC_EOIR_PRC twice for an interrupt event. Writing INTC_EOIR_PRC at first time doesn't change INTC_CPR_PRC, but at the second time change INTC_CPR_PRC.  But I have doubts about whether this method is correct. Object is that external ISRs process while the PIT ISR is running. The solution that I found is fit to my object, That situation doesn't make sense for me.. Reference projects are below: - Example MPC5777C-SIUL_External_NMI GHS714 - Example MPC5777C-SIUL_External_IRQ GHS714 Below is my sample code. void Initialize_Interrupt(void){     // PIT Interrupt Setting     PIT.MCR.R = 0;     PIT.TIMER[0].TFLG = 1;  // Timer Int. Flag Clear     PIT.TIMER[0].TCTRL = 3; // Timer Enable, Timer Int. Enable     PIT.TIMER[0].LDVAL = 24000000 - 1; // Timeout Period     // External Interrupt Setting     SIU.MCR.R = 0;     INTC.IACKR_PRC[0].R =  (uint32_t)&INTC_IVT; // Setting Vector Table     SIU.DIRER.R = 0x0000FFFF; // Int. Enable     SIU.IFEER.R = 0x0000FFFF; // Falling-Edge     SIU.IREER.R = 0x00000000; // Rising-Edge     SIU.PCR[450~455] = 0x0913;     SIU.IMUX3.B.MUXSEL0~5 = 1; // Input Mux. IRQ 0~5     // Priority Setting     INTC.PSR[50]  = 4; // Core0, Ext Isr, Priority 4 (Higher)     INTC.PSR[301] = 3; // Core0, PIT Isr, Priority 3 } void isr_ISR5(void){     // Clear Int. Flag     SIU.EISR.R = 0x80;     // Do Something     // Writting INTC_EOIR_PRC as 0     INTC.EOIR_PRC[0].R = 0; // Is it Correct? But It goes as planned } void isr_PIT0(void){     // Clear Int. Flag     PIT.TIMER[0].TFLG = 1;     // Do Something } Thanks in advance. Re: [MPC5777C] Interrupts are not called after a external ISR call Thank you for testing about that. The reason that my project has problem is my fault. I did add some logging code in ISR to know the order of interrupts called. It seems that reading INTC.IACKR_PRC in IRQ makes interrupt wrong. Thank you so much! Re: [MPC5777C] Interrupts are not called after a external ISR call I have added PIT to the External IRQ example, but I don't see mentioned behavior. One LED is blinking by EIRQ button, second by PIT interrupt. Re: [MPC5777C] Interrupts are not called after a external ISR call I don't understand it too much as write to EOIR register is present in the epilog. From core point of view there is no difference between external interrupt and other IVOR4 sources. I will check it on HW when I am able, letting you know. Re: [MPC5777C] Interrupts are not called after a external ISR call In addition, prolog and epilog are same with the examples
View full article
NHS3152 Passive Measurement Hi everyone I have an NHS3152 on a custom PCB. The PCB is very simple, with an SWD connector for my MCU-Link Pro and some traces to a connector to attach to a screen-printed antenna. For power stability, there are 2x 100nF capacitors in parallel for both pin 3 & pin 7 (4 capacitors total). I am having an issue regarding the resistive measurements. I have two channels for resistive measurements (channel0 = pins 0,1; channel1 = pins 4,5;). When I perform a resistive measurement when the board is running passively (no power from the debugger), my NFC scanner (Adafruit PN532 shield for Arduino Uno) does not receive any data. However, it does receive the correct data from the measurements when the NHS3152 is receiving power from my debugger. If I disable the sections of the code relating to taking resistive measurements, I can successfully read the NFC contents, so I suspect the ADC is consuming too much power? Any help on this is greatly appreciated. IDE: MCUXpresso v24.9.25 SDK: release_mra2_12_6_nhs3152 Output from scanner on unsuccessful read (running in passive mode): ================================================= Tag Found and Activated! Preparing to read data. UID Length: 7 bytes UID Value: 0x04 0x8E 0xE6 0x00 0xA8 0x00 0x10 ---------------------------------------- Reading data from pages 8-12 Failed to read page 8 ================================================= Tag lost or communication failed. Resetting... ================================================= Output from scanner when NHS3152 is powered via debugger: ================================================= Tag Found and Activated! Preparing to read data. UID Length: 7 bytes UID Value: 0x04 0x8E 0xE6 0x00 0xA8 0x00 0x10 ---------------------------------------- Reading data from pages 8-12 Page 08: 6E 52 31 3A nR1: Page 09: 34 2C 52 32 4,R2 Page 10: 3A 2D 31 FE :-1 Page 11: 86 56 4D 3D VM= Page 12: 84 28 57 0C (W. Data read successfully. Tag is still present. ---------------------------------------- NHS3152  main.c: /* * James Harold, 2025, Scion * * This program measures resistance on two separate analog channels * and writes the results to an NFC tag for wireless reading. * */ // 1. Library Imports #include "board.h" #include "ndeft2t/ndeft2t.h" #include #include "pmu_nss.h" #include "gpio_nss.h" #include #include #include // 2. Defines #define CHANNEL_0 0 // Capacitive & resistive channel #define CHANNEL_1 1 // Resistive channel #define NUM_CHANNELS 2 // Number of total measurement channels // 3. Global Variables // Buffers for NDEF message creation (for NFC) static uint8_t g_ndeft2tInstanceBuffer[NDEFT2T_INSTANCE_SIZE] __attribute__((aligned (4))); static uint8_t g_nfcMessageBuffer[NFC_SHARED_MEM_BYTE_SIZE] __attribute__((aligned (4))); // Array to store the results for each measurement channel volatile int32_t measuredResistance[NUM_CHANNELS] = {0, 0}; // 4. NFC Callbacks (Required by the library, but unused) void NDEFT2T_FieldStatus_Cb(bool status) { (void)status; } void NDEFT2T_MsgAvailable_Cb(void) { /* Unused */ } // 5. Function Prototypes void SetupPowerStabilisation(void); void SetupResistiveMeasurement(int channel); int32_t PerformAndCalculateResistance(int channel); void WriteMeasurementsToNFC(int32_t res1, int32_t res2); void WriteHelloMessageToNFC(void); // 6. Main Code int main(void) { // Step 1: Perform minimal board and power setup Board_Init(); SetupPowerStabilisation(); // Must be performed early for energy harvesting from NFC tag // --- Enable Clocks and Power for peripherals that will be used --- Chip_Clock_Peripheral_EnableClock(CLOCK_PERIPHERAL_ADCDAC | CLOCK_PERIPHERAL_I2D); Chip_SysCon_Peripheral_EnablePower(SYSCON_PERIPHERAL_POWER_ADCDAC | SYSCON_PERIPHERAL_POWER_I2D); // A small delay for power and clocks to stabilise Chip_Clock_System_BusyWait_us(100); // --- Resistance Measurement Initialisation --- // Initialise the peripherals and configure the analog pins Chip_ADCDAC_Init(NSS_ADCDAC0); Chip_I2D_Init(NSS_I2D); // Configure analog pins for Channel 0 (ANA0_0, ANA0_1) Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_ANA0_0, IOCON_FUNC_1); Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_ANA0_1, IOCON_FUNC_1); // Configure analog pins for Channel 1 (ANA0_4, ANA0_5) Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_ANA0_4, IOCON_FUNC_1); Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_ANA0_5, IOCON_FUNC_1); // Set the ADC to a narrow voltage range (1.0V) Chip_ADCDAC_SetInputRangeADC(NSS_ADCDAC0, ADCDAC_INPUTRANGE_NARROW); // Step 2: Initialise NFC communication Chip_NFC_Init(NSS_NFC); NDEFT2T_Init(); // Step 3: Perform resistive measurements SetupResistiveMeasurement(CHANNEL_0); measuredResistance[CHANNEL_0] = PerformAndCalculateResistance(CHANNEL_0); SetupResistiveMeasurement(CHANNEL_1); measuredResistance[CHANNEL_1] = PerformAndCalculateResistance(CHANNEL_1); // Step 4: Write measurements to the NFC tag WriteMeasurementsToNFC(measuredResistance[CHANNEL_0], measuredResistance[CHANNEL_1]); //WriteHelloMessageToNFC(); // --- Power down peripherals after use to save energy --- Chip_SysCon_Peripheral_DisablePower(SYSCON_PERIPHERAL_POWER_ADCDAC | SYSCON_PERIPHERAL_POWER_I2D); Chip_Clock_Peripheral_DisableClock(CLOCK_PERIPHERAL_ADCDAC | CLOCK_PERIPHERAL_I2D); // Step 5: Wait for NFC peripheral interrupt while(1) { __WFI(); } return 0; // Should never be reached } // 7. Function Declarations /** * @brief Configures hardware for a resistive measurement on a specific channel. * @param channel : The measurement channel to set up (CHANNEL_0 or CHANNEL_1) * @return Nothing */ void SetupResistiveMeasurement(int channel) { ADCDAC_IO_T dac_pin; I2D_INPUT_T i2d_pin; if (channel == CHANNEL_1) { dac_pin = ADCDAC_IO_ANA0_4; i2d_pin = I2D_INPUT_ANA0_5; } else { dac_pin = ADCDAC_IO_ANA0_0; i2d_pin = I2D_INPUT_ANA0_1; } Chip_ADCDAC_SetMuxDAC(NSS_ADCDAC0, dac_pin); Chip_ADCDAC_WriteOutputDAC(NSS_ADCDAC0, 0xFFF); // Changed from 0xFFF to 0x800 to lower DAC output voltage Chip_I2D_SetMuxInput(NSS_I2D, i2d_pin); if (channel == CHANNEL_0) { Chip_I2D_Setup(NSS_I2D, I2D_SINGLE_SHOT, I2D_SCALER_GAIN_100_1, I2D_CONVERTER_GAIN_LOW, 10); // Changed I2D conversion period from 100 to 10 (power save) } else { Chip_I2D_Setup(NSS_I2D, I2D_SINGLE_SHOT, I2D_SCALER_GAIN_100_1, I2D_CONVERTER_GAIN_LOW, 10); // Changed I2D conversion period from 100 to 10 (power save) } // Wait a moment for the voltage and current to stabilise. Chip_Clock_System_BusyWait_ms(1); } /** * @brief Initialises GPIOs to enable the capacitor bank for power stability. * @return Nothing * @note This is the most critical initialisation for passive operation. */ void SetupPowerStabilisation(void) { Chip_IOCON_Init(NSS_IOCON); Chip_GPIO_Init(NSS_GPIO); // --- Phase 1: PRECHARGE --- // Configure pins as INPUTS with internal pull-up resistors enabled. // This allows the external caps to charge slowly without causing a voltage drop. Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_3, IOCON_FUNC_0 | IOCON_RMODE_PULLUP); // Configure pin 3 as GPIO and enable pull-up Chip_GPIO_SetPinDIRInput(NSS_GPIO, 0, 3); // Configure pin 3 as input Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_7, IOCON_FUNC_0 | IOCON_RMODE_PULLUP); // Configure pin 7 as GPIO and enable pull-up Chip_GPIO_SetPinDIRInput(NSS_GPIO, 0, 7); // Configure pin 7 as input // Wait for a short time to allow the capacitors to charge. Chip_Clock_System_BusyWait_ms(60); // Approx. 60ms for 4 time constants (each pin has 200nF attached) // --- Phase 2: ENGAGE --- // Now that the caps are charged, we can safely connect them to the power rail // by setting the pins to OUTPUT and driving them HIGH. Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_3, IOCON_FUNC_0 | IOCON_RMODE_INACT); // Configure pin 3 as GPIO and disable pull-up Chip_GPIO_SetPinDIROutput(NSS_GPIO, 0, 3); // Configure pin 3 as output Chip_GPIO_SetPinOutHigh(NSS_GPIO, 0, 3); // Connect pin 3 to VDD rail by setting it high Chip_IOCON_SetPinConfig(NSS_IOCON, IOCON_PIO0_7, IOCON_FUNC_0 | IOCON_RMODE_INACT); // Configure pin 7 as GPIO and disable pull-up Chip_GPIO_SetPinDIROutput(NSS_GPIO, 0, 7); // Configure pin 7 as output Chip_GPIO_SetPinOutHigh(NSS_GPIO, 0, 7); // Connect pin 7 to VDD rail by setting it high } /** * @brief Creates an NDEF message with the two resistance values and writes it to memory. * @param res1 : The raw resistance value from the first channel. * @param res2 : The raw resistance value from the second channel. * @return Nothing */ void WriteMeasurementsToNFC(int32_t res1, int32_t res2) { char payloadText[64]; NDEFT2T_CREATE_RECORD_INFO_T createRecordInfo; uint8_t locale[] = "en"; snprintf(payloadText, sizeof(payloadText), "R1:%ld,R2:%ld", res1, res2); NDEFT2T_CreateMessage(g_ndeft2tInstanceBuffer, g_nfcMessageBuffer, NFC_SHARED_MEM_BYTE_SIZE, true); createRecordInfo.shortRecord = 1; createRecordInfo.pString = locale; if (NDEFT2T_CreateTextRecord(g_ndeft2tInstanceBuffer, &createRecordInfo)) { if (NDEFT2T_WriteRecordPayload(g_ndeft2tInstanceBuffer, (uint8_t*)payloadText, strlen(payloadText))) { NDEFT2T_CommitRecord(g_ndeft2tInstanceBuffer); } } NDEFT2T_CommitMessage(g_ndeft2tInstanceBuffer); } /** * @brief Creates a simple NDEF text message "hello" and writes it to NFC memory. * @return Nothing */ void WriteHelloMessageToNFC(void) { char payloadText[] = "bananas"; NDEFT2T_CREATE_RECORD_INFO_T createRecordInfo; uint8_t locale[] = "en"; // 1. Start creating a new NDEF message in our buffer. NDEFT2T_CreateMessage(g_ndeft2tInstanceBuffer, g_nfcMessageBuffer, NFC_SHARED_MEM_BYTE_SIZE, true /* isFirstMessage */); // 2. Prepare information for a new NDEF Text Record. createRecordInfo.shortRecord = 1; createRecordInfo.pString = locale; // 3. Create the Text Record structure within the message. if (NDEFT2T_CreateTextRecord(g_ndeft2tInstanceBuffer, &createRecordInfo)) { // 4. Write the actual "hello" string into the record's payload. if (NDEFT2T_WriteRecordPayload(g_ndeft2tInstanceBuffer, (uint8_t*)payloadText, strlen(payloadText))) { // 5. Finalise this specific record. NDEFT2T_CommitRecord(g_ndeft2tInstanceBuffer); } } // 6. Finalize the entire message, making it available to the NFC hardware. NDEFT2T_CommitMessage(g_ndeft2tInstanceBuffer); } /** * @brief Performs ADC and I2D conversions and calculates the resistance for a specific channel. * @param channel : The measurement channel to measure (CHANNEL_0 or CHANNEL_1) * @return A raw, scaled resistance value, or -1 if an error occurs (e.g., open circuit). * @note Uses low-power __WFE() to wait for conversions, essential for passive mode. */ int32_t PerformAndCalculateResistance(int channel) { int32_t v_drive, v_sense, i2d_val, adc_diff, resistance_result; ADCDAC_IO_T drive_pin_adc, sense_pin_adc; /* * NOTE: Peripheral clocks and power are assumed to be enabled in main(). * If this function were called from multiple places, you might enable/disable * them here instead. For this application, enabling in main() is more efficient. */ if (channel == CHANNEL_1) { drive_pin_adc = ADCDAC_IO_ANA0_4; sense_pin_adc = ADCDAC_IO_ANA0_5; } else { drive_pin_adc = ADCDAC_IO_ANA0_0; sense_pin_adc = ADCDAC_IO_ANA0_1; } // --- V_DRIVE ADC Measurement --- Chip_ADCDAC_SetMuxADC(NSS_ADCDAC0, drive_pin_adc); Chip_ADCDAC_StartADC(NSS_ADCDAC0); // NEW, LOW-POWER WAY: Sleep until the ADC conversion is done. while (!(Chip_ADCDAC_ReadStatus(NSS_ADCDAC0) & ADCDAC_STATUS_ADC_DONE)) { { /* wait */ } } v_drive = Chip_ADCDAC_GetValueADC(NSS_ADCDAC0); // --- V_SENSE ADC Measurement --- Chip_ADCDAC_SetMuxADC(NSS_ADCDAC0, sense_pin_adc); Chip_ADCDAC_StartADC(NSS_ADCDAC0); // Sleep until the ADC conversion is done. while (!(Chip_ADCDAC_ReadStatus(NSS_ADCDAC0) & ADCDAC_STATUS_ADC_DONE)) { { /* wait */ } } v_sense = Chip_ADCDAC_GetValueADC(NSS_ADCDAC0); // --- I2D Measurement --- Chip_I2D_Start(NSS_I2D); // Sleep until the I2D conversion is done. while (!(Chip_I2D_ReadStatus(NSS_I2D) & I2D_STATUS_CONVERSION_DONE)) { { /* wait */ } // Wait For Event - wakes up on ADC_DONE event --> Replaced __WFE() with busy waits {} } i2d_val = Chip_I2D_GetValue(NSS_I2D); /* * NOTE: Peripherals are left powered on for the next measurement. * They will be powered down at the end of main(). */ // --- Calculation --- adc_diff = v_drive - v_sense; if (adc_diff < 1) { adc_diff = 1; } if (i2d_val > 0) { resistance_result = ((uint32_t)adc_diff * 10000) / i2d_val; } else { resistance_result = -1; // Indicates open circuit or error } return resistance_result; } ntag2xx_read.ino: /**************************************************************************/ /*!     @file     readntag_continuous_power_and_data.ino     @author   KTOWN (Adafruit Industries) / Modified for continuous power and data read     @license  BSD (see license.txt)     This version keeps a passive NFC tag continuously powered, and on each     loop, it reads and displays the data from a specific range of pages (8-13).     It resets when the tag is removed. */ /**************************************************************************/ #include #include #include // If using the breakout with SPI, define the pins for SPI communication. #define PN532_SCK  (SCK) #define PN532_MISO (MISO) #define PN532_MOSI (MOSI) #define PN532_SS   (10) // Or whatever SPI CS pin you're using // If using the breakout or shield with I2C, define the pins for I2C // and comment out the SPI definitions. #define PN532_IRQ   (2) #define PN532_RESET (3) // Use this line for I2C Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET); // Or use this line for SPI // Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); // Global state variables to track if a tag is currently selected bool tagIsPresent = false; uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; uint8_t uidLength; int pageStart = 8; int pageEnd = 12; void setup(void) {   Serial.begin(115200);   while (!Serial) delay(10); // For Leonardo/Micro/Zero   nfc.begin();   uint32_t versiondata = nfc.getFirmwareVersion();   if (!versiondata) {     Serial.print("Didn't find PN53x board");     while (1); // halt   }   Serial.print("Found chip PN5"); Serial.print((versiondata >> 24) & 0xFF, HEX);   Serial.print(", Firmware ver. "); Serial.print((versiondata >> 16) & 0xFF, DEC);   Serial.print('.'); Serial.println((versiondata >> 8) & 0xFF, DEC);   // Configure the board to listen for ISO14443A cards   nfc.SAMConfig();   Serial.println("Waiting for an ISO14443A Card to power and read..."); } void loop(void) {   // === STATE 1: NO TAG IS SELECTED ===   // If we don't have a tag, try to find one.   if (!tagIsPresent) {     Serial.print("."); // Print a dot to show we are waiting     // Wait for a card to enter the field. This also provides power.     bool success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength, 500);     if (success) {       tagIsPresent = true;       Serial.println("\n=================================================");       Serial.println("Tag Found and Activated! Preparing to read data.");       Serial.print("  UID Length: "); Serial.print(uidLength, DEC); Serial.println(" bytes");       Serial.print("  UID Value: ");       nfc.PrintHex(uid, uidLength);             // OPTIONAL DELAY: If your tag is a sensor that needs time to       // perform a measurement after power-up, add a delay here.       // 200ms is a good starting point for many sensor tags.       delay(200);     }     // If it fails or times out, the loop will just restart and try again.     return;   }   // === STATE 2: TAG IS SELECTED AND POWERED ===   // If we have a tag, attempt to read the data from pages 8 to 13.   if (tagIsPresent) {     Serial.println("----------------------------------------");     Serial.print("Reading data from pages ");     Serial.print(pageStart);     Serial.print("-");     Serial.print(pageEnd);     Serial.println();         bool all_reads_succeeded = true;         for (int page = pageStart; page <= pageEnd; page++) {       uint8_t page_data[4]; // NTAG pages are 4 bytes long             // Attempt to read the current page       if (nfc.ntag2xx_ReadPage(page, page_data)) {         // Success! Print the data.         Serial.print("  Page ");         if (page < 10) Serial.print("0"); // for nice alignment         Serial.print(page);         Serial.print(": ");         // nfc.PrintHexChar is a great helper function that prints hex and ASCII         nfc.PrintHexChar(page_data, 4);       } else {         // FAILED TO READ! This is our signal that the tag has been removed.         Serial.print("  Failed to read page "); Serial.println(page);         all_reads_succeeded = false;         break; // Exit the for loop immediately       }     }     if (all_reads_succeeded) {       Serial.println("Data read successfully. Tag is still present.");     } else {       // If any read failed, we reset the system state.       Serial.println("\n=================================================");       Serial.println("Tag lost or communication failed. Resetting...");       Serial.println("=================================================");       tagIsPresent = false; // Reset the state       nfc.SAMConfig(); // Re-configure the reader to listen for a new tag     }         // Wait a bit before the next read cycle.     delay(2000);   } } Re: NHS3152 Passive Measurement FYI. NHS3152 power only from NFC field and load Capacitor - NXP Community Re: NHS3152 Passive Measurement Hi Jimmy, thank you for replying. Do you think adding more capacitance to the capacitor bank could possibly enable ADC operation in passive mode? If so, what would be a safe amount of total capacitance to have to perform these operations. Re: NHS3152 Passive Measurement when the board running passively, the power may not stable enough for the ADC operation.
View full article
AMMCLIB vs RTD Dependencies Hello, I'm currently working with the S32K344 microcontroller, using S32 Design Studio 3.6 for Windows. I manually added AMMCLIB version 1.1.40 to my project, which is based on RTD 5.0.0. So far, the project is compiling and linking without issues. However, I’ve only used some of the mathematical functions from the library at this point. While going through the forums, I noticed that some users were advised to revert to earlier RTD versions due to compatibility concerns with certain AMMCLIB releases. Could someone kindly confirm if such incompatibilities apply to AMMCLIB 1.1.40? I reviewed the documentation but couldn’t find a clear reference indicating which RTD versions are officially supported by this AMMCLIB version. Any clarification would be greatly appreciated. Thank you in advance! Re: AMMCLIB vs RTD Dependencies Hi Roger, support for S32 Design Studio 3.6 was added in AMMCLib version 1.1.41, which has been available as update site since July 14, 2025. The latest version is available in this repository: http://www.nxp.com/lgfiles/updates/Eclipse/AMMCLIB/S32DS_3.6 AMMCLib does not depend on RTD APIs and can be used without RTD. However, when you install AMMCLib as a S32DS plugin from the "Extensions and Updates" dialog, you need to have a compatible version of RTD because all S32DS plugins depend on the compilation options set by the RTD. The Eclipse P2 installer will inform you which version of RTD is required if you don't already have it installed. Re: AMMCLIB vs RTD Dependencies Hi, Thank you so much for your interest in our products and for using our community. Just to be clear, there are 2 ways to install AMMCLIB with S32DS, please refer to the following sections of S32K3XXMCLUG: 2.10 Library Integration into a S32 Design Studio for S32 Platform as a RTD plugin 2.11 Library Integration into a S32 Design Studio for S32 Platform as a standalone package The RTD plugin way is only available in S32DS 3.5, I have tested AMMCLIB_v1.1.40 with RTD 4.0.0 and with RTD5.0.0 without any issue. If you are using S32DS 3.6, please follow the standalone way using the *.exe installer. Please consider that if the user chooses to add the AMMCLib in their S32DS project manually, they take the responsibility to ensure that the compiler options follow the recommendations described in the AMMCLib Release Notes. Have a nice day!
View full article
Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? I'm looking to achieve the fastest possible graphics, i.e. scrolling, animations, etc... on the iMX RT1176, running in landscape 720x1280. What settings / example LVGL demo could I reference? Right now I'm using the MIMXRT1170-EVKB and RK055HDMIPI4MA0 5.5" inch screen. Also using FreeRTOS, not bare metal... Thank you, Scott Re: Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? Hi @jingpan, @application_ninja  I am working on a LVGL to understand if I can use it in my project. That is why, I am using SDK examples and GUI Guider.  I have both MIMXRT1166 and MIMXRT1170 EVK Board. I run all examples in SDK and over GUI Guider directly. I especially focused on ScreenTransition Example in GUI Guider v1.9.0.  Till now, I tried many many possible scenarios to reach FPS values greater than 25-30FPS. However, I could not see it even though I enable GPU, which is VG-Lite or PXP or both of that. I experienced running UI just with CPU is working much better than enabling & using VGLite or PXP.  If CPU usage were too low levels, I will continue to my workings with only using CPU. However CPU usage for ScreenTransition Example in Gui Guider reaches over %90. So when my BSP involving later, I could not run and manage my project. That is why I focused to use VGLite. But surprisingly, using VGlite does not work at all. Just dropped CPU usage %70 levels but cause FPS values to 6-7 fps levels.  While I searching what else I can do more to improve UI Fps performance, I found your ticket. You mentioned that you reached 47fps levels on a 720 x 1280  display panel. So your experience is the exact my focus subject. As you read in below link, I tried many things but not close to 30fps or even 20-25 fps values at an acceptable CPU consuming usage. So, I really need your help how you obtained to reach 47fps levels?  I also opened a ticket for finding solution of the problem to GUI Guider side. Here is the link. You can read all the details what I have done so far to improve performance of LVGL UI. https://community.nxp.com/t5/GUI-Guider/LVGL-Demo-Example-Working-too-slowly-problem/td-p/2164492  Waiting your comments. Thanks in advance Re: Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? -O2 does help, but still not the performance I'd expect from this device. 😞 Re: Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? Hi @application_ninja , The original example report 20FPS on my board. If you set compile optimization level to -O2, it will be 34FPS.  The example use VGLite to off-load CPU work load. If you set  LV_USE_GPU_NXP_VG_LITE to 0, the weighted FPS is 24. And if you set compile optimization to -O2, it will be 47FPS. Regards, Jing Re: Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? I have tried GUI Guider and the results are still slow, this is why I am asking what are the optimal settings that can be used to achieve the best results? I would think a dual core 1Ghz processor should produce lighting fast graphics, but that's just not the case. Running the example "benchmark" LVGL programs result in less than 15fps, is this normal / expected? Re: Need fastest possible LVGL graphics VGLite or PXP on iMX RT1176? Hi @application_ninja , Please use GUI Guider. It's base on LVGL and is optimized for RT1176 and PXP. https://www.nxp.com/design/software/development-software/gui-guider:GUI-GUIDER Regards, Jing 
View full article
Programming PN7642 with MCUXpresso Hey there, i got two problems using the #PN7642 (Dev Kit) with MCUXpresso (v24.12.148, SDK version 2.12.5) First one is, that i´m not able to use kGPIO_I2CM_SDA and kGPIO_I2CM_SCL Pins as Output pins. Trying to set them high results in 0,5 V level. I tried SPIM pins as Output and this was no problem. Second one is, that i cannot see the Register values using Peripheral+ view. When I stop the Controller in debug mode, all Registers are red. Only Timer Component shows me some values. What could cause this? Best regards Oliver Re: Programming PN7642 with MCUXpresso Hello @MPEngineering  This should be related to the IDE. You can use an intermediate variable (reg_value) for debugging. That is, you can read the value of the peripheral register and assign it to reg_value, then add reg_value to the debugging window. At this time, you can see the value of the register. It is recommended that you try this. Re: Programming PN7642 with MCUXpresso Well, i want to know the recent register values which i wrote to the controller. In my understanding I use Peripherals+ view to show the recent values. So stopping the Controller in debug mode should show me these values, but i only see the red highlighted Registers without values. What could be the problem? Best regards Re: Programming PN7642 with MCUXpresso Hello @MPEngineering  It should be as the below: Re: Programming PN7642 with MCUXpresso Hey KaiLi, got it.  And what about the Register View? See the photo attached. Best regards Re: Programming PN7642 with MCUXpresso Hello @MPEngineering  You should configure the register PCRM_PADOUT (0xBB) to set SDA/SCL as general GPIO, and then these two pins can be configured to have a high or low output.
View full article
Even when connected to a PC, the USB is not recognized. The USB is not recognized. The SoC is iMX8Mini(MIMX8MM6CVTKZAA). Please tell me the cause by referring to the device tree settings below. &usbotg2 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_usbotg2>; power-active-high; disable-over-current; dr_mode = "peripheral"; status = "okay"; phy_type = "utmi"; phys = <&usbphynop2_alt>; phy-names = "usb"; port { typea_hs: endpoint { remote-endpoint = <&typea_con_hs>; }; }; }; &soc { usbphynop2_alt: usbphynop@381f0040 { compatible = "usb-nop-xceiv"; reg = <0x381f0040 0x40>; #phy-cells = <0>; status = "okay"; }; }; Re: Even when connected to a PC, the USB is not recognized. Thank you very much. I used it as a reference and resolved the issue. Re: Even when connected to a PC, the USB is not recognized. Hello, Could you please share the USB schematic connection of your design? Best regards.
View full article
询问 S32DS_PPC_eqADC 演示 你好,团队 我想了解一下使用 S32DS PA 2.1 的 MPC5777C eQADC 演示? 我试着用 DS 的例子,它在 ADC 转换触发信号期间显示 " DEVASSERT "。 因此,我希望通过 S32DS PA 寻找 MPC5777C eQADC 项目的工作示例。 谢谢! S32DS Re: Asking S32DS_PPC_eqADC demo 嗨,丹 我使用了下面的描述,其中显示了一些措辞。 谢谢。 Re: Asking S32DS_PPC_eqADC demo 你好,@Luke_Chun、 你使用的是哪个 MPC5777C 代码包版本?您查看过示例自述文件中的详细信息吗? 顺祝商祺! 丹
View full article
i.MX93-电源上升时间要求 嗨,团队、 我们正在设计一款采用 i.MX93 处理器和 PCA9451AHNY PMIC 的电路板,作为设计过程的一部分,我们要求i.MX93 电源引脚以及 PCA9451AHNY PMIC 的降压和低压差线性稳压器输出上升时间符合建议的上升时间要求。但处理器和 PMIC 数据表中都没有这些数据。能否请您提供这些详细信息? 此致, Abhijith Re: i.MX93-Power Rise Time requirements 你是指 根据 PCA9450 数据表,其 tRESTART 为 250 毫秒,如下所示。
View full article
TJA1043 アプリケーション こんにちは。TJA1043 のアプリケーション回路図 (19 ページ) に関して質問があります。 TJA1043のINHピンは、TJA1043のVCCピンに電力を供給する5V電源チップのイネーブルピンを制御します。したがって、INHピンが5V電源チップのイネーブルピンをローレベルにすると、5V電源チップはTJA1043のVCCピンに電力を供給できなくなります。電源が供給されていない場合、TJA1043はどのようにしてINH信号を出力し、5V電源チップのイネーブルピンをハイレベルにすることができるのでしょうか? Re: TJA1043 application ありがとう Re: TJA1043 application はい Re: TJA1043 application マイクロコントローラに完全に電力が供給されていない間 (VCC 供給がないとき)、 TJA1043 は、バッテリー供給によって部分的に稼働し続けます。これにより、トランシーバは監視が可能になり、 これが、VCC がない場合でも TJA1043 がCANメッセージを継続できる理由であると理解しています。 Re: TJA1043 application スリープ モードでは、VCC にはすでに電力が供給されていません。 AH1014の45ページ「6.2.4 スリープモード」をよくご覧ください。 アプリケーションのヒント Re: TJA1043 application 定電力アプリケーションでは、VBATの電源がオフになることはありません。リファレンスアプリケーションの回路図によると、ローカルウェイクピンは抵抗を介してVBATにプルアップされています。ウェイクピンは常にハイレベルであるため、ウェイクアップの制御には使用できません。 TJA1043 が CAN バスから電源を供給されていない場合でも、CAN バス ウェイクアップ メッセージを受信できますか? Re: TJA1043 application INH は VBAT に上方接続されており、外部に設置された STB/EN によって TJA1043 の状態が制御され、INH の H/L が制御されます。VBAT がオフになっていないため、他は引き続き制御されます。 TJA1043 はスリープ モードで動作し、STB/EN はいずれもフローティングで無許可で覚醒しており、本地ウェイク ピンまたはリモート ウェイクアップ (CAN バス経由) によって TJA1043 の動作を確認できます。 ウェイクアップ要求、Pwonフラグの設定、またはSTB_NのLOWからHIGHへの遷移は、 UVNOMとタイマーをクリアし、電圧レギュレータが再起動できるようにします(少なくとも UVNOM が再度設定されます。
View full article