Multi Source Translation Content

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Multi Source Translation Content

ディスカッション

ソート順:
General Freescale Content Freescale Corporate Overview Analog and Sensors Overview Automotive MCUs AMPG Overview Digital Networking Overview i.MX 6 Series Product Overview Introduction to Freescale Automotive Introduction to Sensor Products Portfolio Internet of Tomorrow - Solutions and Security Kinetis MCU Portfolio Overview Secure Embedded Processing Overview Single Chip System Modules
記事全体を表示
EUF-ACC-T1639 This session provides an overview of our automotive general purpose roadmap, with microcontroller products ranging from 8KB of flash up to 2MB of flash. Come learn about our line of new ARM® Cortex®-M microcontrollers that address general purpose and low-end automotive body applications, and also our line of highly integrated mixed-signal MCUs, combining a microcontroller and high-voltage analog components in a single piece of silicon to address LIN/CAN nodes in space-constrained applications, with optional motor-control pre-drivers.  This session provides an overview of our automotive general purpose roadmap, with microcontroller products ranging from 8KB of flash up to 2MB of flash. Come learn about our line of new ARM® Cortex®-M microcontrollers that address general purpose and low-end automotive body applications, and also our line of highly integrated mixed-signal MCUs, combining a microcontroller and high-voltage analog components in a single piece of silicon to address LIN/CAN nodes in space-constrained applications, with optional motor-control pre-drivers. 
記事全体を表示
セキュア・エンベデッド・プロセッシングの概要 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
記事全体を表示
Using DMA to Emulate ADC Flexible Scan Mode with KSDK This community post describes how to combine the ADC and DMA using KSDK to simulate a flexible peripheral storing the ADC results into a buffer stored in memory.   In this configuration the MCU uses less resources, only using one ADC and the hardware (DMA) chainging the ADC channel and filling up the memory buffer with the results of the ADC. This way the MCU does not need to read the ADC result register being everything done automatically.                        KSDK The Kinetis Software Development Kit (SDK) is an extensive suite of robust peripheral drivers, stacks, middleware and example applications designed to simplify and accelerate application development on any Kinetis MCU. The addition of Processor Expert technology for software and board support configuration provides unmatched ease of use and flexibility. The Kinetis SDK is complimentary and includes full source code under a permissive open-source license for all hardware abstraction and peripheral driver software.   KINETIS_SDK   FRDM-K64M The FRDM-K64F is an ultra-low-cost development platform for Kinetis K64, K63, and K24 MCUs. The FRDM-K64F hardware is form-factor compatible with the Arduino™ R3 pin layout, providing a broad range of expansion board options. Features: MK64FN1M0VLL12 MCU (120 MHz, 1 MB flash memory, 256 KB RAM) for more information see FRDM-K64F   DMA to Emulate ADC Flexible Scan To emulate flexible scan it is necessary to configure the DMA to change the input ADC channel. The channel numbers are defined in the ADC_mux array. The conversion results are stored in the ADC0_resultBuffer array with the following order:   ADC0_CH12. ADC0_CH13. ADC0_CH23.   The Kinetis K series of microcontrollers also offers a powerfulDMA peripheral with up to 16 channels that can be combined with the ADC to allow the scanning of more than two channels.   System overview ADC Flexible Scan mode requires two DMA channels for one ADC converter. DMA channel 1 with a higher priority transfers the resultant ADC data from the ADC0_RA register to a memory buffer. DMA channel 0 with a lower priority transfers the next ADC channel setting (input multiplexer channel) from the constant buffer. The following figure depicts the application Figure 1. Depicts the application Flow diagram: The example code that accompanies this application note demonstrates a continuous scan conversion from three ADC channels. Each channel is measured four times, so the result buffer size is 3 × 4 = 12 (the real buffer size is 16, to demonstrate that only 12 data field parts are written). The ADC works in hardware trigger mode, with the LPTMR timer serving as the trigger source. Scanning is executed in continuous mode; thus, after a major loop has finished, the result buffer pointer address_0 is reloaded and the conversion begins again from the start buffer address. To calculate and change the frequency, check the macro INPUT_SIGNAL_FREQ to change the frequency value in Hz. The DMA1 is triggered by the ADC, and the DMA0 is triggered by the eLINK of minor   loop of DMA1. In this example the frequency is set to10 Hz, and is the number of samples is 10.   Figure 2. Flow diagram Configuration with SDK Configure the ADC (functions and structures):   The ADC initialization in the application is shown on the following code snippet.   The ADC is in interruption mode. Trigger by LPTMR (HW trigger)                                     Trigger for eDMA enable                                     Fist channel input is 0x0C.  Channel ADC_SE12                                     Select the channel in chnNum                             /*      * Initialization ADC for      * 12bit resolution, interrrupt mode, hw trigger enabled.      * normal convert speed, VREFH/L as reference,      * disable continuouse convert mode.      */ ADC_DRV_StructInitUserConfigForIntMode(&adcUserConfig);     adcUserConfig.hwTriggerEnable = true;     adcUserConfig.continuousConvEnable = false;     adcUserConfig.dmaEnable = true;      ADC_DRV_Init(instance, &adcUserConfig, &gAdcState);      /* Install Callback function into ISR. */    ADC_DRV_InstallCallback(instance, 0U, adc_chn0_isr_callback);      adcChnConfig.chnNum = ADC_INPUT_CHAN;     adcChnConfig.diffEnable = false;     adcChnConfig.intEnable = true;     adcChnConfig.chnMux = kAdcChnMuxOfA;      /* Configure channel0. */     ADC_DRV_ConfigConvChn(instance, 0U, &adcChnConfig);     /* Configure channel1, which is used in PDB trigger case. */      return 0;           To use the DMA driver, follow these steps:   1.  Initialize the DMA module: EDMA_DRV_Init();   2.  Request a DMA channel: DMA_DRV_RequestChannel(); 3.  Configure the TCD:  EDMA_DRV_PrepareDescriptorTransfer(); and EDMA_DRV_PushDescriptorToReg(); 4.  Register callback function: EDMA_DRV_InstallCallback(); 5.  Start the DMA channel: EDMA_DRV_StartChannel(); NOTE: the next two functions are optional for stop and free DMA channel 6.  Stop the DMA channel: EDMA_DRV_StopChannel(); 7.  Free the DMA channel: dma_free_channel().   Initialize the DMA module: EDMA_DRV_Init();   In this function you can select the eDMA channel to use and this function initializes the run-time state structure to provide the eDMA channel allocation release, protect, and track the state for channels. This function also opens the clock to the eDMA modules, resets the eDMA modules and initializes the module to user-defined settings and default settings.   chnDMA1.channel= kEDMAChannel1; chnDMA0.channel=kEDMAChannel0;   userConfig.chnArbitration = kEDMAChnArbitrationFixedPriority; userConfig2.chnArbitration= kEDMAChnArbitrationRoundrobin; userConfig.notHaltOnError = false; userConfig2.notHaltOnError = false;     EDMA_DRV_Init(&state, &userConfig); EDMA_DRV_Init(&state2, &userConfig2);          Request a DMA channel: DMA_DRV_RequestChannel();   This function allocates eDMA channel according to the required channel allocation andcorresponding to the eDMA hardware request, initializes the channel state memory provided by user and fills out the members.   This function provides two ways to allocate an eDMA channel: statically and dynamically. In a static allocation, the user provides the required channel number and eDMA driver tries to allocate the required channel to the user. If the channel is not occupied, the eDMA driver is successfully assigned to the user. If the channel is already occupied, the user gets the return value kEDMAInvalidChn, this is request a channel in a static way, In a dynamic allocation, any of the free eDMA channels are available for use. eDMA driver assigns the first free channel to the user.   //request ADC1// uint8_t requestDMA1 = EDMA_DRV_RequestChannel(kEDMAChannel1, kDmaRequestMux0ADC0, &chnDMA1); if(kEDMAInvalidChannel==requestDMA1)                      {                      printf("EDMAInvalidChannel 1 .  the request is failed.");                      } //request DMA0// uint8_t requestDMA0 = EDMA_DRV_RequestChannel(kEDMAChannel0, kDmaRequestMux0AlwaysOn63, &chnDMA0); if(kEDMAInvalidChannel==requestDMA0)                      {                      printf("EDMAInvalidChannel 0.  the request is failed.");                      }       DMA configurations: is shown on the following code snippet. (edma_transfer_config_t) TCD is a configuration structure, inside has a parameters to change for different types to transfers data.  srcAddr: memory address  pointing to the source data destAddr: memory address pointing to the destination address srcTransferSize: Source data transfer size. destTransferSize: Destination data transfer size. srcOffset: Sign-extended offset applied to the current source address form the next-state value as each source read/write is completed. destOffset: Sign-extended offset applied to the current destination address form the next-state value as each source read/write is completed. srcLastAddrAdjust: Last source address adjustment. destLastAddrAdjust: Last destination address adjustment. Note here it is only valid when scatter/gather feature is not enabled. srcModulo: Source address modulo. destModulo: Destination address modulo.                             minorLoopCount: Minor bytes transfer count. Number of bytes to be transferred in each service request of the channel. majorLoopCount: Major iteration count.   //////////configuration and ELINK DMA channel 1 //////////////////////////////////////////////////////////////////////////////////////////////////////////////        config[kEDMAChannel1].srcAddr = (uint32_t)(&ADC0_RA);  /*!< Memory address pointing to the source data. */        config[kEDMAChannel1].destAddr = (uint32_t)(&ADC0_resultBuffer[0]);/*!< Memory address pointing to the destination data. */        config[kEDMAChannel1].srcTransferSize = kEDMATransferSize_2Bytes;   /*!< Source data transfer size. */        config[kEDMAChannel1].destTransferSize = kEDMATransferSize_2Bytes;  /*!< Destination data transfer size. */        config[kEDMAChannel1].srcOffset = 0;         /*!< Sign-extended offset applied to the current source address to                                            form the next-state value as each source read/write is completed. */        config[kEDMAChannel1].destOffset = 2;        config[kEDMAChannel1].srcLastAddrAdjust = 0;    /*!< Last source address adjustment. */        config[kEDMAChannel1].destLastAddrAdjust = -24;   /*!< Last destination address adjustment. Note here it is only valid when scatter/gather feature is not enabled. */        config[kEDMAChannel1].srcModulo = kEDMAModuloDisable;       /*!< Source address modulo. */        config[kEDMAChannel1].destModulo = kEDMAModuloDisable;       /*!< Destination address modulo. */        config[kEDMAChannel1].minorLoopCount = 2;    /*!< Minor bytes transfer count. Number of bytes to be transferred                                             in each service request of the channel. */        config[kEDMAChannel1].majorLoopCount = 12;    /*!< Major iteration count. */   stcdDmaChn1.NBYTES.MLNO=0x02; /////////////////////////////Elink on/////////////////LINKCH/////major loop chn1// stcdDmaChn1.BITER.ELINKNO= (DMA_BITER_ELINKNO_ELINK_MASK|0x0000|0x0C); stcdDmaChn1.CITER.ELINKNO= (DMA_CITER_ELINKNO_ELINK_MASK|0x0C); stcdDmaChn1.ATTR= (DMA_ATTR_SSIZE(1)|DMA_ATTR_DSIZE(1)); stcdDmaChn1.CSR=(DMA_CSR_MAJORLINKCH(0)|DMA_CSR_MAJORLINKCH_MASK | DMA_CSR_INTMAJOR_MASK);   uint16_t statusChnn1 = EDMA_DRV_PrepareDescriptorTransfer(&chnDMA1, &stcdDmaChn1, &config[kEDMAChannel1], true, false);   if(kStatus_EDMA_Success == statusChnn1)        {          statusChnn1 = EDMA_DRV_PushDescriptorToReg(&chnDMA1, &stcdDmaChn1);        }         EDMA_DRV_PrepareDescriptorTransfer(); This function sets up the basic transfer for the descriptor.   EDMA_DRV_PushDescriptorToReg(); This function copies the software TCD configuration at for the hardware TCD. You needs fill up the structure stcd, and this function do transfer  all structure data in  DMA registers, is use a especial configuration In this case, the structure is filling up to configuration ELINK mode. The ELINK mode is a configuration of eDMA for triggers other DMA channel in each minion loop transfer is complete.   This is a registers of structure,  the mask to enable put on ElINKON mode  and for select channel to link and for put on the major loop to finishing trigger channel. stcd.BITER.ELINKNO= (DMA_BITER_ELINKNO_ELINK_MASK|0x0000|0x0C); stcd.CITER.ELINKNO= (DMA_CITER_ELINKNO_ELINK_MASK|0x0C);         DMA_BITER_ELINKNO_ELINK_MASK it’s a mask to active the channel-to-channel linking on minor-loop complete. As the channel completes the minor loop, this flag enables linking to another channel, defined by theLINKCH field. The link target channel initiates a channel service request via an internal mechanism You can see more information in Reference manual. ///////configuration DMA channel0 ///////////////////////////////////////////////////////////////////////////////////////     config[kEDMAChannel0].srcAddr = (uint32_t)(&ADC_mux[0]);     /*!< Memory address pointing to the source data. */        config[kEDMAChannel0].destAddr = (uint32_t)(&ADC0_SC1A);   /*!< Memory address pointing to the destination data. */        config[kEDMAChannel0].srcTransferSize = kEDMATransferSize_1Bytes;   /*!< Source data transfer size. */        config[kEDMAChannel0].destTransferSize = kEDMATransferSize_1Bytes;  /*!< Destination data transfer size. */        config[kEDMAChannel0].srcOffset = 1;         /*!< Sign-extended offset applied to the current source address to                                            form the next-state value as each source read/write is completed. */        config[kEDMAChannel0].destOffset = 0;        config[kEDMAChannel0].srcLastAddrAdjust = -3;    /*!< Last source address adjustment. */        config[kEDMAChannel0].destLastAddrAdjust = 0;   /*!< Last destination address adjustment. Note here it is only valid when scatter/gather feature is not enabled. */        config[kEDMAChannel0].srcModulo = kEDMAModuloDisable;       /*!< Source address modulo. */        config[kEDMAChannel0].destModulo = kEDMAModuloDisable;       /*!< Destination address modulo. */        config[kEDMAChannel0].minorLoopCount = 1;    /*!< Minor bytes transfer count. Number of bytes to be transferred                                             in each service request of the channel. */        config[kEDMAChannel0].majorLoopCount = 3;    /*!< Major iteration count. */         uint16_t statusChnn0 = EDMA_DRV_PrepareDescriptorTransfer(&chnDMA0, &stcdDmaChn0, &config[kEDMAChannel0], true, true);        if(kStatus_EDMA_Success == statusChnn0)        {               statusChnn0 = EDMA_DRV_PushDescriptorToReg(&chnDMA0, &stcdDmaChn0);        }         The function drivers in main file:          hardware_init();        dbg_uart_init();        OSA_Init();        init_adc(ADC_INST); init_trigger_source(ADC_INST);        config_DMA();   Open your terminal (baud rate 115200)    The results will appear on the terminal software.   Figure 3. Screen serial You can also see the results in the debugger window. Figure 4.  result buffer Steps to include ADC Flexible Scan software to KSDK   In order to include this demo in the KSDK structure, the files need to be copied into the correct place. The adc_dma_demo folder should be copied into the /demos folder. If the folder is copied to a wrong location, paths in the project and makefiles will be broken. When the copy is complete you should have the following locations as paths in your system: /demos/ adc_dma_demo /iar /demos/ adc_dma_demo /kds /demos/ adc_dma_demo /src In addition, to build and run the demo, it is necessary to download one of the supported Integrated Development Enviroment (IDE) by the demo: Freescale Kinetis Design Studio (KDS) IAR Embedded Workbench   Once the project is opened in one of the supported IDEs, remember to build the KSDK library before building the project, if it was located at the right place no errors should appear, start a debug session and run the demo. General Re: Using DMA to Emulate ADC Flexible Scan Mode with KSDK Hi, Ricardo or Martha: Do you have new version of this sample code developed with MCUXpresso-IDE and MCUXpresso-SDK? Thanks! Jerry Re: Using DMA to Emulate ADC Flexible Scan Mode with KSDK sorry lose of  the attachment Re: Using DMA to Emulate ADC Flexible Scan Mode with KSDK hi ricardo, i find some problem. there is "Error retrieving content description for resource '/adc_dma_demo_frdmk64f120m/board/board.h'." its not only board.h, but other .h in board folder cant detect. i was located the folder of source code in " C:\Freescale\KSDK_1.2.0\examples\frdmk64f\demo_apps\adc_dma_demo"  and making the path  as you can see in attach below. hope you can help me to solve the problem. furthermore, many thanks for you if you can make step by step (screenshoot project) integrated to KDS especially. regards, amin
記事全体を表示
ISF2P1_KINETIS_ER_2015April23.pdf <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、2015 年 4 月 23 日にリリースされた PEUPD ファイルの Rev 2 に関連する更新を含む Keretis の ISF 2.1 に対応する正誤表です。 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> これは、2015 年 4 月 23 日にリリースされた PEUPD ファイルの Rev 2 に関連する更新を含む Keretis の ISF 2.1 に対応する正誤表です。 インテリジェント・センシング・フレームワーク
記事全体を表示
自動車アプリケーション向けのフリースケール・マイクロコントラーによるコスト効率の高いソリューション <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、フリースケールの新しい車載用マイコンの概要について、特にBOMや開発コストの削減を可能にする側面に焦点を当てて説明します。ARM® Cortex®アーキテクチャに基づくMCUと、電源、ロジック、およびアクチュエーションの統合を可能にするソリューションを紹介します。 ロレンツォ・ダニエレによる発表 2015年5月12日、DwFイスタンブールにて発表 セッションID: EUF-ACC-T1466 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> このセッションでは、フリースケールの新しい車載用マイコンの概要について、特にBOMや開発コストの削減を可能にする側面に焦点を当てて説明します。ARM® Cortex®アーキテクチャに基づくMCUと、電源、ロジック、およびアクチュエーションの統合を可能にするソリューションを紹介します。 ロレンツォ・ダニエレによる発表 2015年5月12日、DwFイスタンブールにて発表 セッションID: EUF-ACC-T1466 キネティスCortex®-Mマイクロコントローラー
記事全体を表示
Freescale IoT Solutions Learn about what is an IoT Gateway? What are the feature requirements for different types of IoT Gateways? Why security is important and how Freescale addresses these needs? You will also learn about the connectivity options and software enablement for IoT solutions. Presented at DwF IoT Wireless Module Solutions - Jinan - April 23, 2015 & Guangzhou - June 11, 2015 Session ID: APF-SNT-T1356 Learn about what is an IoT Gateway? What are the feature requirements for different types of IoT Gateways? Why security is important and how Freescale addresses these needs? You will also learn about the connectivity options and software enablement for IoT solutions. Presented at DwF IoT Wireless Module Solutions - Jinan - April 23, 2015 & Guangzhou - June 11, 2015 Session ID: APF-SNT-T1356
記事全体を表示
Hands-On Workshop: IoT Wi-Fi Module Development Kit - Quick Start This session will introduce the QFM-2202 Wi-Fi module developed by Freescale and Qualcomm Atheros. Attendees will learn learn how to installation and configure from this hands-on workshop. Attendees should have 2 years experienced engineering and a basic knowledge of Kinetis and able to use IAR. The last 45 minutes of this session we will conduct Q&A. Presented at DwF IoT Wireless Module Solutions - Jinan - April 23, 2015 & Guangzhou - June 11, 2015 Session ID: APF-SNT-T1357 This session will introduce the QFM-2202 Wi-Fi module developed by Freescale and Qualcomm Atheros. Attendees will learn learn how to installation and configure from this hands-on workshop. Attendees should have 2 years experienced engineering and a basic knowledge of Kinetis and able to use IAR. The last 45 minutes of this session we will conduct Q&A. Presented at DwF IoT Wireless Module Solutions - Jinan - April 23, 2015 & Guangzhou - June 11, 2015 Session ID: APF-SNT-T1357
記事全体を表示
ARM® Cortex-M0®+およびCortex-M4コアに基づくKinetisマイクロコントローラ・ポートフォリオの概要 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> フリースケールの最新のKinetisおよび i.MX デバイスの詳細とロードマップをご覧ください。 ジェームズ・ホアンによるプレゼンター 2015年3月19日、DwF Kinetis MCUs Based on ARM® Technology - Tianjin で発表 セッションID: APF-INS-T1013 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> フリースケールの最新のKinetisおよび i.MX デバイスの詳細とロードマップをご覧ください。 ジェームズ・ホアンによるプレゼンター 2015年3月19日、DwF Kinetis MCUs Based on ARM® Technology - Tianjin で発表 セッションID: APF-INS-T1013 i.MXアプリケーション・プロセッサ キネティスCortex®-Mマイクロコントローラー
記事全体を表示
KSDK SPI 主从控制器,带 FRDM-K64F <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 各位 Kinetis 爱好者,大家好!   飞思卡尔已经推出了Kinetis SDK ,我相信这对我们来说是一个很好的机会,可以利用这些驱动程序启动我们的新应用程序。这篇文章中包含的信息将向您展示如何根据简单的主从示例使用 SPI 驱动程序。   此处附加的示例是使用 KSDK 为KDS IDE开发的。要构建和运行示例,您可能需要考虑以下几点: 安装KSDK:您需要KSDK v1.1.0安装在您的机器上。您可以在此处找到它。 构建 KSDK 库并导入示例:在 KSDK 安装文件夹中,转到 doc 文件夹并查找 Kinetis SDK (KSDK) 入门文档。按照第5 节使用 Kinetis Design Studio IDE 运行演示的说明进行操作。了解如何构建和导入项目。 如果您还有其他问题,您可以在此帖子中找到有用的信息: OpenSDAv2 OpenSDA v2 的完整信息。 在 KDS3.0 中编写我的第一个 KSDK1.2 应用程序 - Hello World 和使用 GPIO 中断切换 LED,来自同事Carlos_Musich 的精彩帖子   我希望您能从这篇文章中受益。   如果您有任何疑问,请告诉我   如果这篇文章对您有用,请毫不犹豫地点击“赞”按钮。   顺祝商祺! 阿德里安·桑切斯·卡诺 技术支持工程师   概述 回复:KSDK SPI 主从控制器与 FRDM-K64F <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 嗨,Adrian,这个样本非常有用。但是,我使用的是SDK3.0+KDSK1.2.0,无法声明‘configure_spi_pins’。KDSK1.1.0 和 KDSK1.1.0 有区别吗?和 KDSK1.2.0?包含哪个文件“configure_spi_pins”? 非常感谢! 回复:KSDK SPI 主从控制器与 FRDM-K64F <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,艾德里安 对于这个例子,我该如何操纵时钟相位的配置? 谢谢 回复:KSDK SPI 主从控制器与 FRDM-K64F <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Adrian, 很好的例子, 我对具有 SPI 通信的应用程序有疑问,需要在主模式下传输一个字节并接收 4 个字节,到目前为止我还没有遇到很多问题,但是当我获得字节时,我可以访问其中一个。我如何访问所有接收到的字节。 谢谢 回复:KSDK SPI 主从控制器与 FRDM-K64F <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 你好,Adrian, 很好的样本。您是否有类似的示例程序,但 SPI-Slave 使用 DMA 传输而不仅仅是 IRS? 谢谢!
記事全体を表示
3D STEP model: Unibody Package Case 344-15 Unibody Package Case 344-15 Pressure Sensors
記事全体を表示
CodeWarriorスイートライセンスのサポートを更新する方法 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 2014年12月より、フリースケールのカスタマ・ライセンス管理のWebページが変更されました。 このドキュメントでは、CodeWarriorスイートライセンス(Node-LockおよびFloating License)のサポートを更新する方法を紹介します。 更新後、ユーザーはユーザーアカウントのライセンス管理サイトで最新のCWスイートライセンスを取得できます。 全般
記事全体を表示
Freescale GaN Overview and Roadmap Introduction Presented at DwF RF Solutions - Wuhan Presented by Song Di Presented at DwF RF Solutions - Wuhan Presented by Song Di
記事全体を表示
Example XPC5642AKIT PinToggleStationery CW10.6 ******************************************************************************** * Detailed Description: * Application performs basic initialization, setup PLL to maximum allowed freq., * initializes interrupts, blinking one LED by interrupt, second LED by software * loop, initializes and display notice via UART terminal and then terminal ECHO. * The example configures the device for maximum performance (OPTIMIZATIONS_ON). * For XPC564AKIT324S it initializes EBI for mounted external SRAM. * Its intention is to offer advanced startup code additional to CW stationery. * * ------------------------------------------------------------------------------ * Test HW:        XPC564AKIT208S and XPC564AKIT324S * MCU:            SPC5644AMMG1,0M14X and SPC5644AMVZ1,0M14X * Fsys:           150/132/120/12 MHz * Debugger:       Lauterbach Trace32 *                 PeMicro USB-ML-PPCNEXUS * Target:         RAM, internal_FLASH * Terminal:       19200-8-no parity-1 stop bit-no flow control on eSCI_A * EVB connection: default * ******************************************************************************** ******************************************************************************** * Detailed Description: * Application performs basic initialization, setup PLL to maximum allowed freq., * initializes interrupts, blinking one LED by interrupt, second LED by software * loop, initializes and display notice via UART terminal and then terminal ECHO. * The example configures the device for maximum performance (OPTIMIZATIONS_ON). * For XPC564AKIT324S it initializes EBI for mounted external SRAM. * Its intention is to offer advanced startup code additional to CW stationery. * * ------------------------------------------------------------------------------ * Test HW:        XPC564AKIT208S and XPC564AKIT324S * MCU:            SPC5644AMMG1,0M14X and SPC5644AMVZ1,0M14X * Fsys:           150/132/120/12 MHz * Debugger:       Lauterbach Trace32 *                 PeMicro USB-ML-PPCNEXUS * Target:         RAM, internal_FLASH * Terminal:       19200-8-no parity-1 stop bit-no flow control on eSCI_A * EVB connection: default * ******************************************************************************** General
記事全体を表示
Run Zephyr on A55 with FRDM-IMX93 and FRDM-IMX91 Running Zephyr on i.MX9 A55 core brings a high performance, real-time (short interrupt, scheduler latency, etc.) OS experiences as well as the fast boot, small memory footprint features. This article provide all the information on how to run the Zephyr v4.1 on Cortex-A55 cores to support below features: Supported Features FRDM-IMX93 FRDM-IMX91 Description Zephyr RTOS code base Based on Zephyr v4.1 FRDM-IMX93 board configure Yes Board configuration, build, device tree files FRDM-IMX91 board configure Yes Board configuration, build, device tree files Hello world Yes Yes Dual Ethernet Yes TY8521 Ethernet PHY support Display Yes LCDIF, MIPI DSI, Waveshare 1024x600 7inch DSI LCD(C) Camera Yes MIPI-CSI, ISI, AP1302 sensor Audio Yes I2S with eDMA (Driver only) uSDHC Yes SD card only USB Yes USB CDC device class The code has been release on github: Zephyr samples/drivers: https://github.com/nxp-zephyr/zephyr Zephyr HAL: https://github.com/nxp-zephyr/hal_nxp Tag: FRDM-IMX93-v4.1 How to doc is attached.
記事全体を表示
使用信号频率分析仪 (SFA) 模块对 KW45/KW47/MCXW71/MCXW72 进行时钟测量 使用信号频率分析仪(SFA)测量FRO 6M频率 概述 信号频率分析仪(Signal Frequency Analyzer,SFA)是恩智浦(NXP)KW45、MCXW71、KW47 和 MCXW72 微控制器中提供的一种专用硬件外设。它旨在为数字信号特性(包括频率、周期和定时间隔)提供精确的实时测量和分析。这使得它成为需要精确定时诊断、信号验证和系统调试的应用程序的宝贵工具。 通过利用内部 32 位计数器和可配置的触发机制,SFA 能够高分辨率地捕获信号跳变,支持强大的系统监控和故障检测。 SFA 的功能特性 此SFA模块支持下列测量: 被测时钟 (CUT) 的时钟信号频率 时钟信号周期 它使用两个 32 位计数器运行: 一个用于参考时钟 (REF) 一个用于受测时钟 (CUT) 测量是通过比较两个时钟的计数进行的,直到达到预定的目标值。 FRO 6M 频率故障场景 在某些情况下,6 MHz 自由运行振荡器 (FRO6M)可能会偶尔输出不正确的频率: 当设备退出复位状态时 当设备从低功耗电源模式唤醒时 为减轻因不正确的 FRO6M 输出而导致的潜在问题,应用程序开发人员有责任验证振荡器的频率,并在需要时采取纠正措施。 使用 SFA 监控 FRO 6M 要监控 FRO6M 信号,建议采用以下配置: SFA 配置参数 参考时钟(REF):CPU 时钟(例如,96 MHz) 被测时钟 (CUT):FRO6M 通过 CLKOUT 路由 中断模式:启用异步测量完成中断 代码实现 所展示的函数旨在在用户应用程序中实现,内部函数是恩智浦 SDK 中 SFA 驱动程序实现的一部分。 它可在 MCXW71、MCXW72、KW45、KW47 上使用,只需确保 SFA 外设初始化  void init_SFA_peripheral(void) { /* Enable SFA interrupt. */ EnableIRQ(SFA_IRQn); /* Set SFA interrupt priority. */ NVIC_SetPriority(SFA_IRQn, 1); SFA_Init(DEMO_SFA_BASEADDR); SFA_InstallCallback(DEMO_SFA_BASEADDR, EXAMPLE_SFA_CALLBACK); } SFA 回调函数 void EXAMPLE_SFA_CALLBACK(status_t status) { if (status == kStatus_SFA_MeasurementCompleted) { SfaMeasureFinished = true; } sfa_callback_status = status; } 频率测量功能 此函数使用 CPU 时钟作为参考来设置 FRO6M 信号的测量。 uint8_t SFA_freq_measurement_6M_FRO(void) { uint8_t ratio = 0; uint32_t freq = 0UL; sfa_config_t config; CLOCK_SetClkOutSel(kClockClkoutSelSirc); //set clokout to SIRC SFA_GetDefaultConfig(&config); //Get SFA default config config.mode = kSFA_FrequencyMeasurement0; config.refSelect = kSFA_REFSelect1; //Set CPU clk as ref clk config.cutSelect = kSFA_CUTSelect1; //Set clkout as CUT config.refTarget = 0xFFFFFFUL; config.cutTarget = 0xFFFFUL; config.enableCUTPin = true; freq = get_ref_freq_value(CPU_CLK); SFA_SetMeasureConfig(DEMO_SFA_BASEADDR, &config); SFA_MeasureNonBlocking(DEMO_SFA_BASEADDR); while (1) { if (SfaMeasureFinished) { SfaMeasureFinished = false; if(kStatus_SFA_MeasurementCompleted == sfa_callback_status) { freq = SFA_CalculateFrequencyOrPeriod(DEMO_SFA_BASEADDR, freq);//Calculate the FRO freq if(FREQ_6MHZ + TOLERANCE <= freq ) { ratio = 1; } else { if(FREQ_3MHZ + TOLERANCE <= freq) { ratio = 2; } else { if(FREQ_2MHZ + TOLERANCE <= freq) { ratio = 3; } else { ratio = 4; } } } break; } } else { __WFI(); } } return ratio; } 结果解释与使用 在添加上述函数后测试 FRO 6M,可在执行以下操作后测试 FRO: init_SFA_peripheral (); SFA_freq_measurement_6M_FRO(); 函数 SFA_freq_measurement_6M_FRO() 返回测量的 FRO6M 频率比,通过该比率可以了解 6M FRO 的当前频率输出,比率 1 表示 FRO 正在输出 6M,比率 2 表示 FRO 的频率输出减半,即 FRO 正在输出 3 MHz,比率 3 表示 FRO 的输出频率被削减了三分之一,结果为 2 MHz 频率输出。 有了这些信息,您可以: 如果 FRO6M 频率不正确,调整外设时钟(如果使用了分频器,这可以通过修改外设分频器来实现)。 触发纠正措施,例如切换到备用时钟源 FRO6M 输出频率较低时重新配置外设时钟的步骤 检测故障的 FRO6M 输出 按照前面所述使用 SFA 测量来确定 FRO6M 是否在其预期频率(6 MHz)以下运行。如果结果明显较低,则继续重新配置。 选择备用时钟源 大多数恩智浦微控制器提供多个内部和外部时钟源。常见的替代选项包括: FRO 192M OSC RF 32M SysOsc RTC OSC 选择一个符合以下条件的时钟源: 稳定 在当前电源模式下可用 与外设的时序要求兼容 如果需要,您可以增加时钟分频器,使频率较高的时钟达到某个较低的频率。 重新配置外设时钟源 使用 SDK 的 CLOCK_Set... API 来更改时钟源。 您可能还需要: 调整分频器以匹配所需的波特率或时序 使用新的时钟设置重新初始化外设 示例场景:测量 FRO 并根据频率比调整 UART 假设您的应用程序依赖于 6 MHz 自由运行振荡器(Free Running Oscillator,FRO),且其精度直接影响 UART 通信。为确保可靠运行,您可以使用系统频率调整(System Frequency Adjustment,SFA)功能来监控 FRO 输出,并动态调整 UART 配置。 使用推荐方法测量 6 MHz FRO 后,系统会返回一个频率比值。该值的范围为 1 到 4,其中: 1 表示频率在预期范围内(无问题), 2 到 4 表示与预期频率存在不同程度的偏差。 使用该比率,您可以初始化和配置 UART 外设及其驱动程序,以补偿任何频率变化,确保稳定且准确的通信。 */ int main(void) { BOARD_InitHardware(); uint8_t ch = 0; uint8_t FRO_ratio = 0; init_SFA_peripheral(); /*Measure FRO6M output frequency*/ FRO_ratio = SFA_freq_measurment_6M_FRO(); /*Init debug console and compensate in case a different frequency is output */ if(0 == FRO_ratio) { assert(0);//this user defined return value means something went wrong while measuring 6Mz FRO } uint32_t uartClkSrcFreq = BOARD_DEBUG_UART_CLK_FREQ/FRO_ratio;//Compensate the src frequency set for uart module CLOCK_EnableClock(kCLOCK_Lpuart1); CLOCK_SetIpSrc(kCLOCK_Lpuart1, kCLOCK_IpSrcFro6M); DbgConsole_Init(BOARD_DEBUG_UART_INSTANCE, BOARD_DEBUG_UART_BAUDRATE, BOARD_DEBUG_UART_TYPE, uartClkSrcFreq); ...... } SDK 25.0.00FRO6M 校准功能增强 为了解决6 MHz自由运行振荡器(FRO6M)已知的可靠性问题,尤其是在从低功耗电源模式过渡时,SDK 25.06.00 版本引入了一系列软件增强,旨在提升振荡器的验证和校准能力。 引入的关键特性 FRO6M 校准 API 为方便对 FRO6M 频率进行运行验证,新增了两个功能: PLATFORM_StartFro6MCalibration() 通过启用周期计数器、捕获时间戳并准备使用 CPU 和基于 FRO6M 的时间戳计数器测量经过时间,来初始化校准过程。 PLATFORM_EndFro6MCalibration() 通过比较CPU周期测量的时间与FRO6M时间戳计数器完成校准。此比较确定振荡器是否在预期的 6 MHz 频率下运行,或者错误地锁定到较低的频率(例如 2 MHz)。结果被存储在全局比率变量(fwk_platform_FRO6MHz_ratio)中,供系统使用。 这些函数提供了一种轻量级且高效的机制,用于检测和响应振荡器异常行为,确保系统稳定性和时序精度。 配置宏 gPlatformEnableFro6MCalLowpower_d 该宏用于在退出低功耗电源模式时自动启用 FRO6M 频率验证。定义后,系统将在恢复正常运行前调用校准函数来验证振荡器。 默认集成 在 SDK 配置文件 fwk_config.h 中,该校准机制默认启用,确保所有应用程序无需手动设置即可受益于这一保护措施。 使用案例及优势 这些增强功能在以下应用中特别有价值: 精确的时序至关重要(例如无线通信、传感器采样)。 系统经常进入和退出低功耗状态。 必须保证时钟源完整性,以避免外设异常行为或时序故障。 通过集成这些校准例程,开发人员可以主动检测和纠正 FRO6M 频率异常,提高整体系统鲁棒性,并降低因时钟不稳定导致的运行时错误风险。
記事全体を表示
S32M2xx - MOSFET开关调节用于电机控制示例 本文适用于下文中所描述的所有电机控制应用软件。 S32M2xx - 电机控制用例 - NXP社区 已发现在某些S32M24xEVB上,功率MOSFET可能会出现过热现象。此问题将在新版本的电机控制示例软件中得到解决,并将在适用于S32M24xEVB、S32M27xEVB和S32M276SFFRD的电机控制示例软件中实施。作为当前版本的解决方案,建议采用以下设置。 延长死区时间: 对于S32M24xEVB,以及FTM3,将死区设置为50(对应625纳秒): 对于S32M27xEVB和S32M276SFFRD,以及LCU输出通道0-5,将LUT上升滤波器设置为75(对应625纳秒): 设置更快的翻转率: 所有EVB共有:
記事全体を表示
MCUXpresso 安全配置工具 (SEC) v25.06 现已发布 本次发布有哪些新内容? 支持新处理器: - MCX E24x 处理器:MCX E245、MCX E246、MCX E247 - KW45Z410xx 处理器:KW45Z41052、KW45Z41053、KW45Z41082、KW45Z41083 支持为 MWCT 处理器进行 Edgelock 2GO WPC 配置 增加了对 KW47 和 MCX W727x 处理器的安全启动支持 新增对 i.MX RT7xx 处理器的加密、固件版本支持 集成了 SPSDK 3.0.1,存在向后不兼容情况,包括移除了针对 LPC55Sxx 设备的智能卡信任配置 添加了 RW61x Edgelock2GO 配置固件 v2.0 还有更多!   已知问题和限制 故障排除 文件下载 要下载安装程序,请通过以下链接登录我们的下载网站: https://nxp.com/mcuxpresso/secure 有用链接: 发布说明:MCUXpresso 安全配置工具 (SEC) 发布说明 产品简介:MCUXpresso 安全配置工具产品简介   公告
記事全体を表示
FRDM-MCXW23 Hands-On: Blinky LED Hands On In this lab we make some experience with the FRDM-MCXW23 board using the SDK project to implement a simple LED blinking. Once we will get familiar with the example project, we will integrate simple modifications.   Hardware Requirements Personal Computer FRDM-MCXW23 Board Type C USB Cable   Software Requirements IDE: Visual Studio Code 1.91.1 or newer Extension: MCUXpresso for VS Code v25.06.97 or newer SDK: SDK next gen v25.06.00 or newer SPSDK Tool Windows OS (It was used Windows 11 for this hands-on) Note: In order to make downloads in NXP website, it is necessary to have an account. Please, register and log-in for moving forward.   MCUXpresso for Visual Studio Code   MCUXpresso for Visual Studio Code (VS Code) provides an optimized embedded developer experience for code editing and development. The extension enables NXP developers to use one of the most popular embedded editors tools and provides an easy and fast way to create, build and debug applications based on MCUXpresso SDK or Zephyr projects.               Install it following the next steps: Download Visual Studio Code from Microsoft Store or visual studio code web page  Access to vscode for MCUX wiki and download MCUXpresso Installer  Run MCUXpresso Installer and for this Hands On install at least MCUXpresso SDK Developer Arm GNU Toolchain PEmicro   Installing the FRDM-MCXW23 SDK v 25.06.00 Each MCU has its own SDK that includes driver, examples, middleware, docs and other components. To get and build the demo, let’s install the SDK into VS Code:        Once MCUXpresso for Visual Studio Code is installed open VS Code. Go to MCUXpresso for VS Code extension that is on the tools column at the left. Look for INSTALLED REPOSITORIES option and press ‘+’. Detail steps are described in Use the steps for import a remote Git repository wiki page.      4.Search for FRDM-MCXW23 v25.06.00 SDK and complete installation. Lab Section: LED it Shine Open VSCode and follow the steps in this section to import the led_blinky example from SDK, belonging to the demo_apps section in the MCUXpresso SDK as per the following snapshot:     Click on Import button to import the full project into your workspace. Check the frdmmcxw23_led_blinky_lpc project in the Project explorer tab.                                 Build and Debug the project, follow the steps explained in the previous lab. Start the Debug session and hit the breakpoint at the first instruction in main, then click on Continue (F5) to start the debug session and you will see the RGB GREEN LED blinking at one second rate. Click on Stop (red square button) to stop the debugging. Note: User BLUE LED will continue blinking at the same rate as before because the Debug takes care about flashing the memory. Now is time to play with the code. In the next steps we will add a new blinking LED. Having a look at the schematic of the FRDM-MCXW23 board in the RGB LED section, we notice RED is connected to GPIO0_0 and BLUE is connected to GPIO0_4 while the RED LED (digging a little more in depth in the document) is connected to GPIO0_1.     What we want to do is to have a RED LED blinking at the same one second rate but will blink in the inverse time as the GREEN LED, this means when RED is on BLUE is off and vice versa.  To do this we will add few code modification. 1. Let us first explore a couple of defines part of the example. Open led_blinky.c file, at line 13 you will add the following two defines: #define RED_LED_PIN 1U #define RED_LED_PORT 0 Respectively these two are defining the new LED under control in the application, GPIO0 and pin 1 as per the schematic portion provided above. Have a look then in the code and you will see that at line 65 you will encounter the following function call GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN; This is the function that effectively toggles the LED under control. Let's modify the code to toggle the second LED and also add the name of the color. GPIO_PortToggle(GPIO, BOARD_LED_PORT, 1u << BOARD_LED_PIN; GPIO_PortToggle(GPIO, RED_LED_PORT, 1<< RED_LED_PIN; 2.Now, open the pin_mux.c file and look for BOARD_InitPins on line 67. In line 70 and 72 code enables the clock for the Iocon and GPIO0   /* Enables the clock for the I/O controller.: Enable Clock. */ CLOCK_EnableClock(kCLOCK_Iocon; /* Enables the clock for the GPIO0 module */ CLOCK_EnableClock(kCLOCK_Gpio0; Since BLUE LED is on the same port and GPIO group as RED LED we will not need to add a new one. 3. In line 76 we have the configuration for the GREEN LED  gpio_pin_config_t LED_BLUE_config = { .pinDirection = kGPIO_DigitalOutput, .outputLogic = 0U }; const uint32_t LED_BLUE = (/* Pin is configuBLUE as PIO0_19 */ IOCON_PIO_FUNC0 | /* No addition pin function */ IOCON_PIO_MODE_INACT | /* Standard mode, output slew rate control is enabled */ IOCON_PIO_SLEW_STANDARD | /* Input function is not inverted */ IOCON_PIO_INV_DI | /* Enables digital function */ IOCON_PIO_DIGITAL_EN | /* Open drain is disabled */ IOCON_PIO_OPENDRAIN_DI); /* PORT0 PIN19 (coords: 7) is configuBLUE as PIO0_19 */ IOCON_PinMuxSet(IOCON, BOARD_INITPINS_LED_BLUE_PORT, BOARD_INITPINS_LED_BLUE_PIN, LED_BLUE); Now we need to add the configuration for the RED LED, add the next code after BLUE LED configuration. Notice that default output logic is 1 the opposite of BLUE LED this will be use to have the opposite state when LEDs toggle. /* Initialize GPIO functionality on pin PIO0_1 */ GPIO_PinInit(BOARD_INITPINS_LED_RED_GPIO, BOARD_INITPINS_LED_RED_PORT, BOARD_INITPINS_LED_RED_PIN, &LED_RED_config); const uint32_t LED_RED = (/* Pin is configuBLUE as PIO0_19 */ IOCON_PIO_FUNC0 | /* No addition pin function */ IOCON_PIO_MODE_INACT | /* Standard mode, output slew rate control is enabled */ IOCON_PIO_SLEW_STANDARD | /* Input function is not inverted */ IOCON_PIO_INV_DI | /* Enables digital function */ IOCON_PIO_DIGITAL_EN | /* Open drain is disabled */ IOCON_PIO_OPENDRAIN_DI); /* PORT0 PIN19 (coords: 7) is configuBLUE as PIO0_19 */ IOCON_PinMuxSet(IOCON, BOARD_INITPINS_LED_RED_PORT, BOARD_INITPINS_LED_RED_PIN, LED_RED); 4. If you tried to compile now you will get some errors this is because we use some defines that are not created yet. Go to pin_mux.h, in this file we have definitions for BLUE LED as well starting on line 45. /* Symbols to be used with GPIO driver */ #define BOARD_INITPINS_LED_BLUE_GPIO GPIO /*!<@brief GPIO peripheral base pointer */ #define BOARD_INITPINS_LED_BLUE_GPIO_PIN_MASK (1U << 19U) /*!<@brief GPIO pin mask */ #define BOARD_INITPINS_LED_BLUE_PORT 0U /*!<@brief PORT peripheral base pointer */ #define BOARD_INITPINS_LED_BLUE_PIN 19U /*!<@brief PORT pin number */ #define BOARD_INITPINS_LED_BLUE_PIN_MASK (1U << 19U) /*!<@brief PORT pin mask */ Create defines for REDS LED, copy next test after BLUE LED defines #define BOARD_INITPINS_LED_RED_GPIO GPIO /*!<@brief GPIO peripheral base pointer */ #define BOARD_INITPINS_LED_RED_GPIO_PIN_MASK (1U << 1U) /*!<@brief GPIO pin mask */ #define BOARD_INITPINS_LED_RED_PORT 0U /*!<@brief PORT peripheral base pointer */ #define BOARD_INITPINS_LED_RED_PIN 1U /*!<@brief PORT pin number */ #define BOARD_INITPINS_LED_RED_PIN_MASK (1U << 1U) /*!<@brief PORT pin mask */ 5. Follow the steps described at point 3 to Build and Debug the application and hit the Continue button to start the debugging session. You will see the BLUE LED blinking at the same one second rate alternating with GREEN one. What if we want to change the blinking rate? Having a look at the led_blinky.c file, we notice there one special function called SysTick_Handler(void) defined at line 33. This is the interrupt routine associated to the so called Systick timer which is a timer embedded within the Cortex-M33 core typically used as a system tick for many RTOSes. The interrupt routine toggles the LED in use at a specific moment. We do not see any initialization function of it, though. The Systick Timer in this particular implementation is initialized by the function SysTick_Config(SystemCoreClock/1000U); invoked at line 59, this function simply initialize the internal SysTick Timer to a certain value taken as time base. The blinking delay is ensured by the  SysTick_Config(1000U) function called at line 69. Check what happens if you change the value of 1000U to another value.  6. Navigate to the ultimate call, and let us see what happens if we modify the call at line 69 like this: SysTick_DelayTicks(1000U/2); 7. Save the modification (CTRL+S), Build and start the debugging. What are you observing? Has the blinking rate changed, if yes, is it faster or slower? Congratulations, you have mastered the LED it shine Lab. (view in My Videos) FRDM-Training Hands-On Training MCU Wireless
記事全体を表示
在 A55 上运行 Zephyr,使用 FRDM-IMX93 和 FRDM-IMX91 在 i.MX9 A55 核心上运行 Zephyr 可带来高性能、实时(短 中断、调度器延迟等)的操作系统体验,以及快速启动、内存占用小 的特性。 本文提供了关于如何在 Cortex-A55 核心上运行 Zephyr v4.1 以支持以下特性的所有信息: 支持的功能 FRDM-IMX93 FRDM-IMX91 说明 Zephyr RTOS 代码库 基于 Zephyr v4.1 FRDM-IMX93 板配置 是 板配置、构建、设备树文件 FRDM-IMX91板配置 是 板配置、构建、设备树文件 你好,世界 是 是 双以太网 是 TY8521 以太网 PHY 支持 显示器 是 LCDIF、MIPI DSI Waveshare 1024x600 7 英寸 DSI LCD(C) 摄像头 是 MIPI-CSI、ISI、AP1302 传感器 音频 是 带 eDMA 的 I2S(仅驱动程序) uSDHC 是 仅限SD卡 USB 是 USB CDC设备类 代码已在 github 上发布: Zephyr样本/驱动:https://github.com/nxp-zephyr/zephyr Zephyr HAL: https://github.com/nxp-zephyr/hal_nxp 标签:FRDM-IMX93-v4.1 操作指南文档已附上。
記事全体を表示