NXP Designs Knowledge Base

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

NXP Designs Knowledge Base

Discussions

Sort by:
Demo Watch as the i.MX 8 development vehicle takes data in from the camera and uses one GPU and applies an image segmentation algorithm. The info is then fed to another GPU dedicated to a neural network inference engine which recognizes the traffic sign Products i.MX 8 Series Applications Processors|NXP  Training i.MX 8 Applications Processors Family Overview: i.MX 8, i.MX 8X, i.MX 8M  i.MX 8M Processor Overview and the Road Ahead  Micron’s Memory Solutions for the New i.MX 8 Microprocessor   
View full article
A reference design using DMA to scan ADC0 and ADC1 channels within FreeRTOS task, trigger interrupt when one scan completes. Hardware FRDM-K22F (https://www.nxp.com/design/development-boards/freedom-development-boards/mcu-boards/nxp-freedom-development-platform-for-kinetis-k22-mcus:FRDM-K22F). IDE IAR8.4.2. SDK The code is based on SDK2.2 (or later version) which can be built and downloaded on nxp website https://MCUXpresso.nxp.com  Function Description K22F MCU support 2 ADC modules, they are configured to do ADC channel scanning at same time. The ADC channels are defined in ADC0_Channel_List and ADC1_Channel_List, and the ADC conversion result will be saved in ADC0_Result and ADC1_Result. DMA and DMA MUX are configured to load the ADC channels and save the ADC conversion result. The DMA interrupt will be triggered when the scanning is completed. The ADC scanning is re-started when current loop is completed. Customer can processing the ADC result. To demonstrate multi-tasks, there are the other two tasks was implemented: I2C task and UART2 task.  The sensor on the FRDM-K22F board will be read in I2C task. Uart2 task recieve the data from UART2 and send the data back. Running the Demo ============================================================ 1) Open the IAR project 2) Build the project and download the code to FRDM-K22F board 3) Running the code 4) Add the arrary ADC0_result, and ADC1_Result to living watch window, the ADC result data will be refreshed. Note: Some ADC inputs are floating, so the conversion result may have great changes. 5) Open the terminal, open the serial port, and configure it with 115200/8bit/1 stop bit, the senor data will be printed in the terminal window
View full article
The Attach demo consists of a 3 board stack up using the Arduino connectors on the Kinetis FRDM-KL26Z board. The demo runs from a Li Ion polymer battery and consists of 1x FRDM-KL26Z board, 1x FRDM-BATT board (including battery and loudspeaker) and 1x Arduino LCD touch screen board. The code builds using either CodeWarrior V10.6 or IAR EWARM V7.20.2. The software uses eGUI to drive the Arduino LCD and runs demos for the following Sensors - FXOS8700 (combined 3-axis Accelerometer and Magnetometer) and FXAS21000 (3-axis MEMs Gyro). The demo also includes 7-element eCompass code for which full source code is available. Finally, the board also uses the MC34673 1.2A charger for Li Ion batteries, charging is accomplished via either of the USB ports on the FRDM-KL26Z. All datasheets, schematics, source code and bill of materials are included in the zip archive. NOTE: software update which now includes 10-element eCompass software and Kalman filtering code creating a far more accurate eCompass solution. Recommended Products Product Link Freedom Development Platform for Kinetis® KL16 and KL26 MCUs (up to 128 KB Flash) FRDM-KL26Z|Freedom Development Platform|Kinetis® MCU | NXP 
View full article
[KW36, Hybrid]多个蓝牙LE连接+通用FSK演示应用程序 USL:https://community.nxp.com/docs/DOC-344510     文档目的 该文档通过描述一个与GFSK(通用频移键控)进行并行通信的多低功耗蓝牙连接节点拓扑,提供了一个混合应用程序(Wireless_UART + GFSK Advertising)的示例。这是SDK之外的另一个附加示例,SDK中我们定义了一个混合应用程序,演示了与GFSK并行通信的蓝牙LE广播和扫描。   读者 该文档的目的是为想要在低功耗蓝牙应用程序中使用、适配和集成GFSK功能的软件开发者提供指南。       搭建开发环境 工具链:     -IAR Embedded Workbench 8.32或更高版本;     https://www.iar.com/iar-embedded-workbench/ SDK: -此版本的固件已使用SDK_2.2.1_FRDM-KW36进行了测试,可以使用以下 链接下载:http://mcuxpresso.nxp.com/en/select     (请考虑选择Toolchain/IDE: All toolchains);     硬件: -2到5 块FRDM-KW36 开发板:https://www.nxp.com/demoboard/FRDM-KW36     操作流程: 此演示应用程序是针对FRDM-KW36平台设计的,可以轻松集成到使用KW35/36系列 MCU的任何电路板上。   该功能基于SDK(移动无线系统-MWS模块)上的共存机制。基于硬件链路层的实现,低功耗蓝牙具有比GFSK协议更高的优先级,因此,GFSK通信在低功耗蓝牙的空闲状态(非活动时段)内执行。   有关MWS模块的更多详细信息,请参阅SDK中的连接框架文档(Connectivity Framework Reference Manual.pdf)。   低功耗蓝牙同时支持central和peripheral两个角色。   KW36 SDK的集成 -下载附件并解压到…\SDK_2.2.1_FRDM-KW36\boards\frdmkw36\wireless_examples\hybrid 文件夹:   -打开IAR项目(SDK_2.2.1_FRDM-KW36_2019_07_19\board\frdmkw36\wireless_examples\hybrid\ble_w_uart_gfsk\freertos\iar\ble_w_uart_gfsk_freertos.eww)。   -该项目的组织方式如下:     功能   开关功能: -该功能在main.c文件中的BleApp_Handle Keys函数中定义; -FRDM-KW36: -SW2-开始扫描- Central设备; -长按SW2-开始扫描-peripheral设备;(长按 SW2指按住SW2键3秒钟以上) -SW3-启动/停止GFSK TX操作(扫描); -长按SW3-启动/停止GFSK RX操作(长按SW3指按住SW3键 3秒钟以上) 日志: -串口输出电路板的不同状态; -波特率115200;   验证 该解决方案已使用1个主设备和4个从设备进行了验证,如下所示:   1.创建网络     a.打开所有设备的串行通讯。重置后,您将看到以下消息:     b.在Central设备上,按SW2开始扫描; c.在peripheral设备上,长按SW2开始广播并等待串口上的确认;     d.在所有从设备上重复步骤b和c。 e.当Central设备的网络成功创建时,您将看到以下内容:           f.检查空中链路(连接间隔=312.5ms):   2.验证低功耗蓝牙的功能: -从每个从设备(peripheral)的串口写入一条消息(例如:testslaveX)并检查该消息是否打印在主设备的串口上。   -在主设备(Central)的串口终端上进行相同的测试。   -以下是该步骤的示例:     -空中日志:   3.启动GFSK通讯: -在其中的一块开发板上按SW3开始GFSK TX操作(AdvAddress = 0909090909的广播数据包);每隔1秒钟(gGenFskApp_Txlnterval_c)在空中发送一个ADV数据包。   -选择另一块开发板并长按 SW3以启动GFSK RX操作(RX间隔 = 100ms = gGenFskApp_Rxlnterval_c)   -收到来自地址 = 0909090909的ADV数据包时,它将在串口上打印出来,如下所示:   -空中GFSK TX数据包被列为ADV_NONCONN_IND:   4.验证GFSK和Bluetooth LE并行能力: -在主设备(Central)串口上写一条消息,并检查从设备(peripheral)串行终端上的反馈:     附上此应用程序的源代码。 真挚的问候 Ovidiu   附件 BLE+GFSK_Demo_application.zip(https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/wireless-connectivity%40tkb/253/1/BLE+GFSK_Demo_application.zip)  
View full article
引言 FRDM-KW36包含带有32 kHz晶体振荡器的RTC模块。此模块为以极低功耗模式运行的MCU生成32 kHz时钟源。该振荡器包括一组用作CLOAD的可编程电容器。改变这些电容器的值可以改变振荡器提供的频率。 此可配置电容的范围为0 pF(禁用电容器组)至30 pF,步长为2 pF。 这些值是通过组合启用的电容器获得的。可用值为2 pF,4 pF,8 pF和16 pF。可以完成这四个数值的任意组合。如果可以使用外部电容器,建议禁用这些内部电容器(清除RTC控制寄存器SFR中的SC2P,SC4P,SCS8和SC16位)。 要调整振荡器提供的频率,必须首先能够测量该频率。使用频率计数器将是非常好的,因为它提供了比示波器更精确的测量。您还需要输出振荡器频率。要输出振荡器频率,以任意一个蓝牙演示应用程序为例,您应该执行以下操作: 调整频率示例 本示例将利用Connectivity Software Stack中的心率传感器演示(freertos版本),并假定开发人员具有从SDK到IDE导入或打开项目的知识。 1.从SDK中打开或克隆“心率传感器”项目。 2.在工作区的board文件夹中找到board.c和board.h文件。 3.如下图所示在board.h文件中声明一个void函数。该函数将RTC管脚复用设置为输出到PTB3并能够测量频率。 4. 如下所示在board.c文件中开发BOARD_EnableRtcClkOut函数。 5. 代码如下: 6. 在BOARD_BootClockRUN(board.c文件)之后立即在hardware_init函数中调用BOARD_EnableRtcClkOut函数。 7. 在工作区的board文件夹中找到clock_config.c文件。 8. 在文件顶部添加以下定义。 9. 在BOARD_BootClockRUN函数内部(也在clock_config.c文件中)搜索对函数的CLOCK_CONFIG_EnableRtcOsc调用,然后通过上述任意定义来编辑变量。 10. 最后,在项目源文件夹中的“ preinclude.h”文件中禁用低功耗选项和LED支持: 此时,您可以在PTB3中进行测量,并使用频率计数器进行频率调整。每次对电路板进行编程时,都需要执行POR以获得正确的测量。下表是从FRDM-KW36板版本B获得的,可用作调整频率的参考。 请注意,电容不仅由启用的内部电容组成,还包括封装,内部走线,芯片焊盘和PCB走线中的寄生电容。因此,尽管下面给出的参考测量值应接近实际值,但您还应该在电路板上进行测量,以确保频率是专门针对您的电路板和布局进行调整的。 Labels:KW   KW35 | 36 kinetis kw36a
View full article
  From GUI to prototype to Product - Fast The evolution of Embedded GUI Design   Products ARM Cortex-A9|i.MX 6 Multicore Processors   Links NXP Partner Program - Crank Software Partner Profile   Other Demo Videos Storyboard Demo Launcher on Freescale's iMX6 Sabre Lite From Photoshop to Crank Storyboard Suite to i.MX Series Hardware in Minutes
View full article
For showing text, graphics, animations in the LED panel, I decided to use the well known eGUI graphic library, porting the code to Kinetis SDK 1.3 + FreeRTOS and develop an eGUI low level driver for the LED panel.   http://www.nxp.com/egui http://github.com/Gargy007/eGUI   This porting will have two goals:   Use the eGUI for controlling the LED panel Use a QVGA display connected to FRDM-K82 to develop and simulate applications that will work in the LED panel   FRDM-K82 + Uctronics display:     eGUI Demo running:   I also ported PEG to FRM-K82 and Uctronics display in case could be used for bigger panels, 30 x 16 is not supported by PEG, so eGUi will be used as graphic library in this project. http://www.nxp.com/peg   PEG running in this platform:     Emulating the application that  will work on the LED panel is possible using the QVGA display:   Find attached  : eGUI Porting to FRDM-K82 with KSDK 1.3 and FreeRTOS running the eGUI demo application eGUI Porting to FRDM-K82 with KSDK 1.3 and FreeRTOS running the same application we will run in the LED panel. It also includes SEGGER_SYSVIEW.   Part 2: LED control method using the FlexIO Part 4: Software for panel control Or Return to Project page: LED Panel control with FlexIO
View full article
Demo This demo showcases the MAC57D5xx microcontroller rendering on a LVDS 1280x480 display for a full digital graphic instrument cluster and a Head-up Display on a secondary panel showcasing the warping capabilities of the microcontroller.       Single-chip instrument cluster solution with powerful graphics subsystem, including inline Head-Up Display warping functionality Dual-core ARM® Cortex®-A5/M4 for real-time and application processing and additional Cortex-M0+IOP core Cryptographic Services Engine, tamper detection and password protection for Flash memory and JTAG   Links Ultra-Reliable Multi-Core ARM-based MCU
View full article
Demo This demo combines Multi-standard Digital Radio by means of Software Defined Radio and combining broadcast radio with internet radio to get the best audio listening experience for the end user. By downloading a different FW start-up of the device this HW platform can service as a global digital radio receiver for the whole world, supporting DAB+, HD-Radio and the DRM standards. This demo can also demonstrate that the internet/IP (which is making its way into more and more cars these days) can also be used as an alternative to broadcast radio. By aligning the two streams (IP-FM), the radio can seamlessly switch between IP and FM to create a continuous audio stream for the listener, especially in the car where radio reception condition change every second     Demo / product features Digital radio and processing system-on-chip (SAF360x) Car radio Digital Signal Processor (SAF775x)   NXP Recommends Multi Standard Digital Radio features and benefits Software defined radio Technology   Links  Software-Defined Radio: One Global Platform for Car Entertainment     A06
View full article
Demo DJI Phantom 1 quadcopter drone with customised ESC module containing a single Kinetis KV5x MCU controlling all 4 propellers. Includes four MC34GD3000 3-ph Motor Driver ICs.   Features KV5x 240MHz ARM Cortex-M7 MCU with high speed ADCs & timers controlling all 4 BLDC motors GD3000 BDLC motor pre-driver featuring fast switching to drive low Q MOSFETs Single MCU solution unique in the market – reduced component count and BOM cost with superior performance   Featured NXP Products KV5x|Kinetis KV5x Connected Control MCUs|NXP KV4x |Kinetis KV4x High Precision Control MCU|NXP 3-Phase Brushless Motor Pre-Driver|NXP   Other Videos  
View full article
this doc explain the S32G PCIe HW design checkpoints and How to debug HW issue with SW. 主要包括:         1:S32G PCIe硬件设计说明。         2:如何根据硬件设计配置软件。         3:如何根据软件现象debug硬件连接问题。         4:一个连接PCIe外设的demo. 目录 1    背景与资料说明... 2 1.1  背景说明... 2 1.2  所需资料说明... 2 2    PCIe硬件设计说明... 2 2.1  S32G PCIe能力... 2 2.2  S32G PCIe原理图设计... 4 2.3  S32G PCIe设计说明... 8 2.4  S32G PCIe硬件bring up. 9 3    PCIe 软件说明... 9 3.1  软件配置说明... 9 3.2  PCIe uboot初始化流程... 12 3.3  PCIe Linux初始化流程... 19 4    硬件连接错误的软件表现示例... 21 4.1  时钟配置错误... 21 4.2  硬件连接错误... 23 5    RDB3连接PCIe设置Demo. 25 5.1  硬件说明... 25 5.2  Uboot配置... 26 5.3  内核打印... 27 5.4  内核sys文件夹... 36  
View full article
Demo This demo shows how the FlexIO peripheral can be utilized to connect directly to an RGB TFT display to deliver a rich graphical display. The demo uses the versatile Tower ecosystem to connect the TWR-K80F150M MCU board to the display. The demo is well documented by an Application note and associated software     Features Dynamic Graphical LCD (480x272) with 16bt RGB interface Images stored in fast external Serial NOR flash FlexIO utilized to generate 16bit interface to TFT display with minimal CPU intervention   _______________________________________________________________________________________________________   Featured NXP Products: Product Link Kinetis® K80 MCU Tower® System Module TWR-K80F150M|Tower® System Board|Kinetis® MCUs | NXP  Graphical LCD Tower System Module with RGB Interface Graphical LCD Tower Module with RGB Interface | NXP  _______________________________________________________________________________________________________ Links AN5275: Using FlexIOhttp://cache.nxp.com/files/microcontrollers/doc/app_note/AN5275.pdf?fsrch=1&sr=1&pageNum=1 AN5280: Using Kinetis FlexIO to drive a Graphical LCD http://cache.nxp.com/files/archives/doc/app_note/AN5280SW.zip
View full article
Demo Owner michaelestanley By monitoring the vibration signature of a rotating machinery we can predict the remaining useful life of that machine. Features Condition monitoring Visual characterization of the fundamental frequency of a  motor along with its harmonics Features that can be observed: wavelength, transfer coefficients, statistical measures, standard deviations, variances Preparing work flows where users can use machine learning algorithms to to figure out what feature sets are important, focusing only on the features that are needed to predict the remaining useful life of the machine Links Sensors
View full article
  Introduction   In this document, we are focusing on the usage of two functions of FreeRTOS: Creation of tasks and the use of queues as a way to trigger a generic functionality in our application. NXP’s SDK abstraction layer for the QN908x is intended to give the customer a simpler way of FreeRTOS usage and control functionalities. Hardware Requirements: QN9080DK Software Requirements: MCUXpresso IDE v11.1.0 or newer QN908XCDK SDK with BLE stack and examples (It can be downloaded from the SDK Builder) This document is based on the Wireless UART example from the SDK. Setting up the required variables and definitions Import the FreeRTOS version of the wireless_uart example included in the QN9080’s SDK.   Note: Be sure to select UART as your debug console.    2. In order to change the default role of the QN9080 board it is required to change the definition of the mGapRole variable, from gGapCentral_c to gGapPeripheral_c in PROJECT_FILE_NAME > source > wireless_uart.c > BleApp_Config(). //wireless_uart.c //static void BleApp_Config(void) { /* By default, always start node as GAP central */ //mGapRole = gGapCentral_c; mGapRole = gGapPeripheral_c; (void)Serial_Print(gAppSerMgrIf, "\n\rWireless UART starting as GAP Peripheral, press the role switch to change it.\n\r", gAllowToBlock_d); mAdvState.advOn = TRUE; mScanningOn = FALSE; //...}‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍    3. It is important to change the macro value of: osNumberOfMessageQs in PROJECT_FILE_NAME > framework > OSAbstracion > Interface > fsl_os_abstraction_config.h to a value > 0.  //fsl_os_abstraction_config.h #ifndef osNumberOfMutexes #define osNumberOfMutexes 5 #endif #ifndef osNumberOfMessageQs #define osNumberOfMessageQs 1 #endif #ifndef osNumberOfMessages #define osNumberOfMessages 10 #endif‍‍‍‍‍‍‍‍‍ //...‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Then, to start the task implementation it is needed to edit the file: PROJECT_FILE_NAME > framework > OSAbstracion > Source > fsl_os_abstraction_free_rtos.c.        First, we create the prototype of the main task function, then define the task using the “OSA_TASK_DEFINE” definition. The syntax should be the following: This function is part of the thread Management, it helps the user define the creation of a new thread, controlling the priority and stack requirements. The following parameters are used in the function definition. name: Should be the name of the function used as our task priority: The scheduler will grant a minor or major priority to our function with this parameter. instances: This parameter give us the control to limit the number of instances in order to manage the memory in the most optimal way. stackSz : This parameter has a default value, which is defined by the abstraction layer as: gMainThreadStackSize_c as 1024 bytes. useFloat : This parameter is part of the thread definition structure, is a Boolean, It defines if the thread will use floating point.   //fsl_os_abstraction_free_rtos.c /*! ********************************************************************************* ************************************************************************************* * Private functions ************************************************************************************* ********************************************************************************** */ OSA_TASK_DEFINE(startup_task, gMainThreadPriority_c, 1, gMainThreadStackSize_c, 0) ; void vfnTaskPWM(void* param); //New Task Definition OSA_TASK_DEFINE(vfnTaskPWM, 1, 1, 500, FALSE ); osaTaskId_t gAppTestTask1Id = 0; // TestTask1 Id osaTaskId_t pwmTask_queue = 0; //get defines from wireless_uart int main (void) { /* Initialize MCU clock */ hardware_init(); OSA_TaskCreate(OSA_TASK(startup_task), NULL); //Task and Queue creation. gAppTestTask1Id = OSA_TaskCreate(OSA_TASK(vfnTaskPWM), NULL); //Task Creation pwmTask_queue = OSA_MsgQCreate(1); //Scheduler starting vTaskStartScheduler(); return 0; } //..‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍   4. The function: OSA_TaskCreate returns a taskID it is required to create a osaTaskId_t variable as the following: osaTaskId_t gAppTestTask1Id = 0; and also another osaTaskId_t variable for the FreeRTOS queue we will be using : osaTaskId_t pwmTask_queue = 0.‍‍‍‍‍‍‍ 5. Inside the main function we will create our task in the same fashion the startup_task is created: gAppTestTask1Id = OSA_TaskCreate(OSA_TASK(vfnTaskPWM), NULL);‍‍‍‍‍‍‍ 6. We also need to create the queue using the same type of variable and using the OSA_MsgQCreate() function to create a new Queue: pwmTask_queue = OSA_MsgQCreate(1);‍‍‍‍‍‍‍ 7. After this statements the scheduler should start: vTaskStartScheduler(); 8. In the wireless_uart.c file it is required to add pwmTask_queue, created for the queue as an extern variable. //wireless_uart.c static uint8_t gAppSerMgrIf; static uint16_t mAppUartBufferSize = mAppUartBufferSize_c; static volatile bool_t mAppUartNewLine = FALSE; static volatile bool_t mAppDapaPending = FALSE; extern osaMsgQId_t pwmTask_queue; /************************************************************************************ ************************************************************************************* * Private functions prototypes ************************************************************************************* ************************************************************************************/ /* Gatt and Att callbacks */ static void BleApp_AdvertisingCallback(gapAdvertisingEvent_t *pAdvertisingEvent);‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ Tasks and Queues implementation in our application code In this example we implemented the use of OSA_MsgQPut() to place the message received from the central peripheral in a queue by using: //wireles_uart.c static void BleApp_ReceivedUartStream(deviceId_t peerDeviceId, uint8_t *pStream, uint16_t streamLength) { static deviceId_t previousDeviceId = gInvalidDeviceId_c; char additionalInfoBuff[10] = { '\r', '\n', '[', '0', '0', '-', 'M', ']', ':', ' '}; uint8_t *pBuffer = NULL; uint32_t messageHeaderSize = 0; if (mAppUartNewLine || (previousDeviceId != peerDeviceId)) { streamLength += (uint32_t)sizeof(additionalInfoBuff); } /* Allocate buffer for asynchronous write */ pBuffer = MEM_BufferAlloc(streamLength); if (pBuffer != NULL) { /* if this is a message from a previous device, print device ID */ if (mAppUartNewLine || (previousDeviceId != peerDeviceId)) { messageHeaderSize = sizeof(additionalInfoBuff); if (mAppUartNewLine) { mAppUartNewLine = FALSE; } additionalInfoBuff[3] = '0' + (peerDeviceId / 10U); additionalInfoBuff[4] = '0' + (peerDeviceId % 10U); if (gGapCentral_c != maPeerInformation[peerDeviceId].gapRole) { additionalInfoBuff[6] = 'S'; } FLib_MemCpy(pBuffer, additionalInfoBuff, sizeof(additionalInfoBuff)); } FLib_MemCpy(pBuffer + messageHeaderSize, pStream, (uint32_t)streamLength - messageHeaderSize); /**** Adding a message into a Queue ****/ OSA_MsgQPut(pwmTask_queue, (void*)&pBuffer); /**************************************/ (void)Serial_AsyncWrite(gAppSerMgrIf, pBuffer, streamLength, Uart_TxCallBack, pBuffer); } /* update the previous device ID */ previousDeviceId = peerDeviceId; }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ This function points to the external queue variable created before the main() function of the project. Also points to the buffer pointer of the message received in BleApp_ReceivedUartStream(), These parameters can be accessed by using OSA_MsgQGet() function. osaStatus_t OSA_MsgQGet(osaMsgQId_t msgQId, void *pMessage, uint32_t millisec)‍‍ This function gets the message from the head of the message queue, the parameters of this function are the following: msgQId : Is the identifier of the queue function. pMessage : Is a pointer to the same message sent fromOSA_MsgQPut(); millisec : Is the number of milliseconds to wait for a message.   Inside the task created: vfnTaskPWM() there is an infinite while loop checking if a message is in the queue, this is accomplished by using the os_abstraction function: The rest of the task implementation is in a different C file. The external queue variable is defined in this file in addition to the task function prototype: /*pwmApplication.c*/ /*Global Variables*/ static uint8_t gAppSerMgrIf; extern osaMsgQId_t pwmTask_queue; /*Function Prototypes*/ void signalConfigValues(int red, int green, int blue); void getValuesRGB(uint8_t* msgString); int getInt(char *stringInteger, int size); /****Task Definition****/ void vfnTaskPWM(void* param); /* * Task to configure the PWM pins and start the timer * */ void vfnTaskPWM(void* param) { uint8_t* msgString; char msgString1[20] = { '\0', '\0', '\0', '\0','\0', '\0', '\0', '\0','\0', '\0', '\0', '\0','\0', '\0', '\0', '\0','\0', '\0', '\0', '\0'}; while(1) { /* * If there is a new message on queue the value will return a 0 according to the OSA_MsgQGet function * to compare the incoming message * */ while((OSA_MsgQGet(pwmTask_queue,(void*)&msgString,10)) == 0){ //shift-up the pointer value to get the payload message if(*msgString == '\r'){ while(*msgString != 32){ msgString++; } msgString++; } FLib_MemCpy(msgString1,msgString,20); if(FLib_MemCmp(msgString1, "OFF", 4)){ (void)Serial_Print(gAppSerMgrIf,"\n\r OFF: ", gAllowToBlock_d); //configure the PWM new function signalConfigValues(0,0,0) and StartTimers(CTMRA,CTMRB) signalConfigValues(0,0,0); } else{ //a function to convert values from a string to integers getValuesRGB(msgString); } } } } ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
View full article
Description   An ultrasonic-based measurement or a camera implementation are a key part of applications dealing with non-contact object distance measurement and object detection, like an automotive parking distance sensor, blind spot detection and object detection. For an ultrasonic implementation, the S12ZVC integrates a 16-bit MCU, automotive voltage regulator, CAN physical layer, and high-speed timers with input capture and output compare, making it a single chip solution for low-end parking aid systems. For a camera implementation, the i.MX 8 applications processor along with the S32V234 vision processor offers the power required for image processing and intercommunication between multiple cameras and modules.   Features   Automotive voltage regulator CAN physical layer High speed timers with input capture and output compare Ultrasonic technology or cameras for the detection and avoidance of close objects   Block Diagram       Products   Category Name 1: MCU Product URL 1 S12ZVC Mixed-Signal MCUs|MagniV | NXP  Product Description 1 The S12ZVC platform, part of the S12 MagniV® mixed-signal MCU family, offers a low-cost, highly integrated solution that enables the design of smallest possible automotive CAN-termination nodes, while the family concept gives you scalability for platform design. Product URL 2 i.MX 8 Family Applications Processor | Arm Cortex-A53/A72/M4 | NXP  Product Description 2 Fast multi-OS platform deployment via advanced full-chip hardware virtualization and domain protection. Incorporate vision and speech recognition interactivity via a powerful vision pipeline and audio processing subsystem. Product URL 3 S32V234 Vision Processor | NXP  Product Description 3 The S32V234 MPU offers an Image Signal Processor (ISP), powerful 3D Graphic Processor Unit (GPU), dual APEX-2 vision accelerators, automotive-grade reliability, functional safety, and security capabilities for supporting computation intensive ADAS, NCAP front camera, object detection and recognition, surround view, and automotive image processing.   Category Name 2: Ethernet Product URL 1 SJA 110EL | Five ports AVB Automotive Ethernet Switch | NXP  Product Description 1 The SJA1105EL Ethernet switch offers a flexible solution for implementing modular and cost-optimized ECUs capable of supporting any in-vehicle connectivity requirement. Product URL 2 TJA1101 | 2nd generation PHY Transceiver | NXP  Product Description 2 TJA1101 is a high-performance single port, IEEE 100BASE-T1 compliant Ethernet PHY Transceiver. Product URL 3 TJA1102/TJA1102S | Automotive Ethernet Transceivers | NXP  Product Description TJA1102 (TJA1102S) is a highly integrated dual (respectively single) port, IEEE 100BASE-T1 compliant Ethernet PHY Transceiver.   Category Name 3: Power Management Product URL 1 PMIC for high-performance applications | NXP  Product Description 1 The PF8100/PF8200 PMIC family is designed for high-performance processing applications such as infotainment, telematics, clusters, vehicle networking, ADAS, vision and sensor fusion.   Category Name 4: CAN Product URL 1 TJA1057 | High speed CAN transceiver | NXP  Product Description 1 The TJA1057 is part of the Mantis family of high-speed CAN transceivers. It provides an interface between a Controller Area Network (CAN) protocol controller and the physical two-wire CAN bus.   Documentation S32R Radar Signal Compression: https://www.nxp.com/docs/en/application-note/AN5375.pdf    Tools Product Link DEVKIT-S12ZVC: Development Board for 9S12ZVCA192 MCU Evaluation DEVKIT-S12ZVC development platform for S12ZVC | NXP  MCIMX8QM-CPU: i.MX 8QuadMax Multisensory Enablement Kit (MEK) i.MX 8QuadMax/QuadPlus Multisensory Enablement Kit | NXP  S32V234EVB: S32V Vision and Sensor Fusion Evaluation System S32V Vision and Sensor Fusion Evaluation System | NXP  OM14500-TJA1102: Evaluation Board, TJA1102HN 100BASE-T1 Automotive Ethernet PHY TJA1102/S Evaluation Board | NXP  SJA1105Q-EVB: Ethernet Switch & PHY Evaluation Board. SJA1105Q-EVB | Ethernet Switch and PHY Evaluation Board | NXP 
View full article
FAST BOOT FOR lx2160 IN adas •Objective To speed ​​​​up bringup of LX2 chip-based systems •Pain Points to Address The bringup time is much longer than 3s, which is very sensitive in ADAS systems or time-sensitive systems. •Value Proposition / Key Features The guide can help customers shorten uboot time from 5s to less than 1.5s, saving more than 70% bootup time. •Deliverables Demo based on LX2160ARDB board. Reference codes and patches. Guide for Fast boot document. Fast boot 广泛用于嵌入式设备,现以lx2160ardb板为例进行相关探索。 启动流程: 优化思路: 1.适当提高FSPI时钟速率 diff --git a/lx2160asi/flexspi_divisor_32.rcw b/lx2160asi/flexspi_divisor_32.rcw index 422139c..0f8d5c9 100644 --- a/lx2160asi/flexspi_divisor_32.rcw +++ b/lx2160asi/flexspi_divisor_32.rcw @@ -7,8 +7,10 @@ * Modify FlexSPICR1 register, to increase FlexSPI clock closer to 50MHz, * with divisor value as 32. * => 750 * 2 / 32 ==> 46.875MHz + *write 0x1e00900,0x00000013 + * 0f -12 =125M */ .pbi -write 0x1e00900,0x00000013 +write 0x1e00900,0x0f .end ​ 2.关键路径优化 固化spd参数 固化ddrc参数 BL33 裁剪 详细patch和测试结果参考附件。
View full article
这篇文章通过覆盖与GFSK (通用频移键控)通信并行的 低功耗蓝牙 多节点连接,提供了混 合应用程序( W ireless UART + GFSK Advertising )的示例。这是 SDK 的另一个示例,其中我 们定义了 混合应用程序,用于与 GFSK 通信并行进行蓝牙 LE 广告和扫描。 Products Product Category NXP Part Number URL MCU KW36/35/34 https://www.nxp.com/products/wireless/bluetooth-low-energy/kw36-35-34-arm-cortex-m0-pluskinetis-kw36-35-34-bluetooth-low-energy-32-bit-mcus-nxp:KW36-35 MCU KW39/38/37 https://www.nxp.com/products/wireless/bluetooth-low-energy/kw39-38-37-32-bit-bluetooth-5-0-long-range-mcus-with-can-fd-and-lin-bus-options-arm-cortex-m0-plus-core:KW39-38-37   Tools NXP Development Board URL FRDM-KW36 Freedom Development Kit https://www.nxp.com/design/development-boards/freedom-development-boards/mcu-boards/frdm-kw36-freedom-development-kit-for-kinetis-kw36-35-34-mcus:FRDM-KW36 FRDM-KW38 Freedom Development Kit https://www.nxp.com/design/designs/freedom-development-kit-for-kw39-38-37-mcus:FRDM-KW38   SDK SDK Version URL MCUXpresso SDK Builder https://mcuxpresso.nxp.com/en/welcome
View full article
Demo Owner: Eduardo Montanez   Watch how Kinetis K Series and Kinetis L Series MCUs beat out the competition.     Features Latest Kinetis K2 microcontrollers running a CoreMark benchmark from EEMBC 4 different Microcontrollers are put to the test. Running all the same iteration benchmark with same capacity for all of the products Featured NXP Products K22F KL02 Links Kinetis MCUs|ARM® Cortex®-M Cores|NXP Kinetis L Series MCUs: Energy-Efficiency Benchmark Demo Kinetis L Series MCUs Energy Efficiency Benchmark - YouTube  
View full article
Boundary Devices demo is a handheld, battery powered wireless streaming application. The demo consists of an NXP SCM-i.MX 6SoloX V-Link device (i.MX6SoloX/PF0100/512MB LPDDR2) + Boundary Devices’ V-Link Top board with 802.11ac module + Boundary Devices’ Carrier board with 5MP MIPI Camera and Battery SCM V-Link technology is ideal for handheld/space-constrained applications allowing customers to integrate vertically. Features: The demo application streams data via wireless from the 5MP camera on the handheld device to a desktop board which shows the stream on a 7” display. There is a point-to-point link from the handheld device to the desktop device. V-Link Top board from Boundary Devices – QCA9377 802.11ac + BT4.1 module. Pre-certified and ready for production. Mounts on top of SCM V-Link module which is ideal for space constrained applications. 22mm x 19mm board dimensions. Available Linux/Android Drivers for easy Wi-Fi + BT software integration for kernel 3.14.28 and above. On 5GHz network utilizing SDIO 3.0, Wi-Fi throughput is 90Mb/s. ___________________________________________________________________________________________________ Featured NXP Products: Single Chip System Modules (SCM)|NXP Partner Boundary Devices
View full article
Overview The NXP ®  S12G automotive HVAC platform reference solution uses the scalable S12G 16-bit MCU family with MC33905, MC33932 and MC33937 analog devices to drive stepper, DC and BLDC motors and provide a feature-rich solution for automotive HVAC applications. Consists of a central control board with (HMI, a motor control board, flap and blower motors Enables basic functions of an auto HVAC using temperature, light, humidity and air quality sensing interfaces with configurable automatic climate control software algorithm to efficiently control vehicle climate Reduces overall design effort, shortens time to market and can be tailored for both 12V and 24V systems Features Three types of motor control sensorless BLDC DC stepper motor Automatic climate control Supports multiple temperature zones Ultra low power mode, can be woken up by HMI or LIN CAN bus CAN and LIN communication interfaces 3x3 matrix keypad and two encoder knob inputs 4x37 segment LCD and adjustable backlighting Sensor interfaces for temperature, light, humidity and air quality available Two logic relay interfaces to compressor defrost module Real-time clock and date display, adjustment for calendar Extensible with touch keyboard or touchscreen board Suitable for both 12 volt and 24 volt HVAC systems Block Diagram Design Resources
View full article