Multi Source Translation Content

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

Multi Source Translation Content

ディスカッション

ソート順:
imx6q mfgtools for android_N7.1.2_2.0.0 が動作しない <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi nxp, imx6q mfgtoolsが機能せず、開けません。 私はアンドロイド7.1.2_2.0.0用のmfgtoolsをダウンロードしましたが、mfgtools.zipのサイズはわずか4.28MBで、サブディレクトリはクリーンで、ファームウェアとUCLはありません。 ここからのダウンロード:https://www.nxp.com/webapp/sps/download/preDownload.jsp  感謝 Re: imx6q mfgtools for android_N7.1.2_2.0.0 が動作しない <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello, 問題についてはチームにお知らせします。 あなたの情報をありがとう! よろしくお願いします。 Yuri. Re: imx6q mfgtools for android_N7.1.2_2.0.0 が動作しない <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、ユーリ・ムヒンさん。            partition-table.img は Andorid 7.1.2 リリースの新しい IMG ファイルです。 しかし、以前のmfgtoolリリースのucl2.xmlはそうではないため、partition-table.imgはボードに点滅しません。          borad は、前の mfgtool でフラッシュした後、partition:boot を見つけることができません。 これはログです。 U-Boot 2017.03 (2017年9月20日 - 00:38:39 +0800) CPU: Freescale i.MX6Q rev1.5 996 MHz (792 MHzで動作) CPU:38°Cで自動車用温度グレード(-40°C〜125°C) リセット原因: POR モデル: Freescale i.MX6 Quad SABRE スマート・デバイス・ボード ボード:MX6-SabreSD DRAM: 1 GiB PMIC:PFUZE100です!DEV_ID=0x10 REV_ID=0x21 MMC:FSL_SDHC:0、FSL_SDHC:1、FSL_SDHC:2 警告 - 不正なCRC、デフォルトの環境を使用 パネルが検出されませんでした:デフォルトはHannstar-XGAです ディスプレイ:Hannstar-XGA(1024x768) で:シリアル アウト:シリアル エラー:シリアル フラッシュターゲットはMMC:2 ネット: イーサネットが見つかりません。 パーティションが見つかりません:その他、パーティションテーブルをダンプします idx 0, ptn 0 name='gpt' start=0 len=2048 idx 1, ptn 0 name='bootloader' start=2 len=2046 idx 2, ptn 1 name='mmcsdc1' start=16384 len=65536 idx 3, ptn 2 name='mmcsdc2' start=83968 len=65536 idx 4, ptn 0 name='' start=0 len=0 その他のパーティション情報を取得できません パーティション 4080 が見つかりません do_raw_read失敗、再 1 read_bootctl、読み取りbcb_rw_block失敗しました 読み取りコマンドが失敗しました Re: imx6q mfgtools for android_N7.1.2_2.0.0 が動作しない <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hello, コミュニティディスカッションで言及されているように、"imx6q mfgtools for Android 7.1.2_2.0.0問題」、以下にリンク、N7.1.2。MFGツールパッケージ Web には、ターゲットの読み込み用の画像は含まれていません。お客様は次のことができます 「Android_Quick_Start_Guide.pdf」を使用し、セクション3.3(ボード画像の点滅)方法 OS(デモ)イメージのファイルを使用します。 https://community.nxp.com/message/957626    また、ucl2.xmlファイルとmksdcard-android.sh.tarファイルを配置する必要があります mfgtools\Profiles\Linux\OS Firmware\ ディレクトリにあります。 これらのファイルは、以前の mfgtool リリースから取得できます。   よろしくお願いします。 Yuri.
記事全体を表示
2013年フリースケールカップUSA東海岸結果 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 東海岸のチームとUCバークレーの皆さん、アメリカで総合最速の車におめでとうと言いたいです! イベントのその他の写真/ビデオ。 ウェスト対東の勝者:ジョルト - UC-Berekley 17:35 東海岸チーム: 1位:相対論的ロボットレーサー-ロードアイランド大学-22.04秒 2位:バルカー - ペンシルベニア州立カリフォルニア大学 - 25.15秒 3位:テンプルメイド-テンプル大学-25.72秒 完全な結果を見る フリースケール・カップの内容 イメージギャラリー 日時:2013年フリースケールカップUSA東海岸結果 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> TFC - USA 教員ポータル TFC - メキシコ TFC - EMEA 日時:2013年フリースケールカップUSA東海岸結果 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 素晴らしい! 投稿していただきありがとうございます!! 日時:2013年フリースケールカップUSA東海岸結果 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> フリースケールカップアメリカ東海岸地域大会 2013 - YouTube
記事全体を表示
DMA を使用した ADC シミュレーションの柔軟なスキャン モード (SDK 2.x を使用) <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [中国語訳] 添付ファイルを参照 元のリンク: https://community.nxp.com/docs/DOC-335320 Kinetis Hardware Support
記事全体を表示
imx7DへのKSZ9031の移植 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> [中国語訳] 添付ファイルを参照   元のリンク: https://community.nxp.com/docs/DOC-343802 i.MX7Dual
記事全体を表示
采用 QorIQ P1010 的 802.11 接入点 - 演示 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 该演示展示了 1Gbit/s 企业无线解决方案和最新的 IEEE ® 802.11ac。     特征 P1010 QorIQ处理器产品基础参考设计 能够扩展到 1GHz 性能能力 3x3 802.11ac 设计可实现超过 700 - 800Mbits/秒的性能 P1020 和 P1023 双核版本是 P1010 的升级版,吞吐量相似,但 CPU 余量更大 特色恩智浦产品 P1010:带有可信架构的QorIQ P1010/14低功耗通信处理器 P1020:QorIQ P1020/11单核和双核通信处理器 P1023:带有数据通路的QorIQ P1023/17低端单核和双核通信处理器 链接 QorIQ QorIQ P1010 RDB 入门 - YouTube 结构框图   通信基础设施
記事全体を表示
K32L2B ベースの額温度計のリファレンスデザイン <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> NXPの豊富なアナログ周辺機器とデジタルインターフェースを搭載したK32 L2Bシリーズは、コスト重視で低消費電力のバッテリー駆動アプリケーション向けに設計されており、額温度測定アプリケーションを実現できます。以下の特長を備えています。 1. マルチチャンネル16ビットADCを内蔵し、赤外線温度センサーやバッテリー電圧からの信号を収集できます。現在、K32L2Bの16ビットシングルエンドモードの精度は13.9ビット、差動モードの精度は14.5ビットに達します。チップに内蔵されたADCは、これらの要件を満たし、0.1度の温度測定精度を実現します。 2. 12ビットDACは外部オペアンプにバイアス電圧を供給します。これにより、外部の3Vから1.2Vへのレベル変換チップや、外部分離デバイスで構築された降圧変換回路を節約できます(オペアンプのバイアス回路はμAレベルの電流しか消費しないため、チップ上の電流DACでこの要件を満たすことができます)。さらに、Vrefこのピンは内部で 1.2V の基準電圧を出力でき、負荷容量は最大 1mA です。 3. sLCD:低消費電力のセグメントコード表示は、24x8または28x4セグメントをサポートします。sLCDピンは、セグメントとCOMポートの両方として機能します。sLCDとして設定されていないピンも、他のI/O機能制御ポートとして使用できます。 4. 3 つの I2C チャネル (2 つの I2C チャネルのうち 1 つは赤外線デジタル センサーまたは近接センサーに接続され、もう 1 つは外部の NXP PCT2075 温度センサー チップに接続できる高精度デジタル温度センサーに接続され、残りの 1 つの I2C チャネルは FlexIO を使用して標準の I2C、UART、または SPI 通信を実装します)。 5. 2 ウェイ PWM を使用して LED を駆動し、LED またはブザー警報信号を表示し、音声再生機能を実現します。 6. USB FS 2.0 スレーブ デバイス インターフェイス。追加の水晶は不要です。 7. 最大256Kフラッシュ、48MHz Arm ® Cortex ® -M0+コアをサポートします。K32L2B11VLH0A 64Kフラッシュ、32K RAM構成は、額温度計のニーズを満たします。 8. 低消費電力: 実行モードでは 54 uA/MHz、RAM と RTC がホールド状態のときのディープ スリープ モードでは 1.96 uA。システム電力消費に関するバッテリー駆動のハンドヘルド赤外線温度測定ガンの厳しい要件を満たしています。 9. 10us 未満の高速ウェイクアップ モードがあり、メイン コントロールをウェイクアップして、時間内に実行モードに入ることができます。 10. 64ピンLQFPパッケージには、ユーザーのヒューマンマシンインターフェース設定ボタンの要件を満たすために、少なくとも5つのGPIOが用意されています。額温度テストモジュールを大画面カラーディスプレイを備えたハイエンドi.MXシリーズに接続する場合は、K32L2B11VFM0Aなどの32ピンパッケージを選択できます。 11. 額温度計のフラッシュ容量の需要は、主にNTC(RT抵抗温度変換テーブル)と赤外線温度測定(VT電圧温度変換テーブル)の校正パラメータの保存、および音声放送データの保存です。64Kフラッシュはこれらの要件を満たすことができます。 12. K32 L2B シリーズは広範な製品ロードマップを備え、完全なピン機能の互換性と拡張フラッシュをサポートし、Bluetooth や QR コードスキャンなどの新しい拡張機能要件を追加できます。 13. 内蔵ROMブートローダーにより、オンラインでのプログラムアップグレードと温度パラメータのキャリブレーションが容易になります。高精度内部クロックを内蔵しており、工場出荷時のファームウェア設定に使用されます。NXPが提供するKinetis Flash Toolを使用してツールソフトウェアをダウンロードしてください。 GUI は、追加のシミュレーション ダウンロード デバッグ ツールを必要とせずに、USB 経由でファームウェアを直接簡単に更新し、構成パラメータを調整できます。 14.MCUXpresso ConfigTool: 使いやすいソフトウェア構成ツールと完全な周辺機器ドライバー SDK パッケージにより、迅速なプロトタイピング開発が容易になります。 現在、64ピンIOリソースは十分に活用されているため、額温度計ではセグメントコードディスプレイを統合した64ピンパッケージのシングルチップが主流となるでしょう。もちろん、48ピンや32ピンの製品もあり、通常は外付けのsLCDディスプレイドライバチップが必要になります。 NXP K32L2B MCU をベースにした額温度計リファレンス ソリューション (ハードウェア バージョン): https://mp.weixin.qq.com/s/k96HO32ek2i_FjADtdsK9g NXP K32L2B MCU をベースにした額温度計リファレンス ソリューション (ソフトウェア バージョン): https://mp.weixin.qq.com/s/QVCeW1RS57tAYaDi8mQ7Lw Industrial Smart Home Technologies
記事全体を表示
Wandboard - フリースケールi.MX6 Cortex-A9プロセッサを搭載した超低消費電力、高性能、低コストの開発ボード <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Wandboardは 、新しい近日発売予定のFreescale i.MX6 Cortex-A9プロセッサをベースにした高性能マルチメディア機能を備えた超低電力の完全なコンピュータで、まばゆいばかりの1GHzプロセッサ、HDMIディスプレイインターフェイス、ギガビットイーサネットが付属しています。Wandboard(Wandboard DUAL)のデュアルコアバージョンは、1GBのメモリを搭載するだけでなく、Wi-FiとBluetoothも搭載しています。     Wandboard Solo Wandboard Dual プロセッサ フリースケールi.MX6 Solo フリースケールi.MX6 Duallite Cores Cortex-A9シングルコア Cortex-A9デュアルコア メモリ 512 MB DDR3 1 GB DDR3 オーディオ • • オプティカル S/PDIF • • HDMI • • カメラ・インターフェース • • microSDカード・スロット 2 2 シリアルポート • • 拡張ヘッダー • • USB • • USB OTG • • SATAコネクタ 入力されていません 入力されていません Gigabit LAN • • WI-FI(802.11n) • Bluetooth • 69米ドル 89米ドル   www.wandboard.org 担当者 : [email protected] 全般 Re:Wandboard - フリースケールi.MX6 Cortex-A9プロセッサを搭載した超低電力高性能低コスト開発ボード <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> こんにちは、Wanboard Quad BoardにはいくつのPCBレイヤーがあるのか知りたいのですが?私はただ将来のカスタム開発に関連して興味がありますか?どなたかこの情報を持っていただけると幸いです。 Re:Wandboard - フリースケールi.MX6 Cortex-A9プロセッサを搭載した超低電力高性能低コスト開発ボード <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> hi, 私はこのボードをTenet Technetronics.itsから入手しました.それはうまく動作し、Jelly BeanとUbuntuはこのボード上でスムーズに実行されています。
記事全体を表示
例MPC5777M LINFlex UART Echo SW プーリング GHS614 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ******************************************************************************** * 詳細説明: * * シンプルなLINFlex UARTモードは、割り込みなしで送受信します(ポーリングされたUART) * TXFIFOおよびRXFIFOマクロは、バッファモードとFIFOモードのどちらかを選択するために使用されます * * PITチャネル0は、PA0ピンがトグルされる1sec割り込みを生成するためにも使用されます。 * * EVB接続: * *マザーボード * J14 - SCI_RXオフ * J13 - SCI_TXオフ * J25 - SCI_PWRオン * ※PC端末(19200、8N1、なし)で結果をご覧ください。 * ------------------------------------------------------------------------------ *テストHW:MPC5777M、MPC57xxマザーボード+ MPC5777M_512DSミニモジュール * Maskset:  0N78H * 対象 : RAM, internal_FLASH * Fsys:600 MHz PLL1、40 MHz水晶リファレンス、 * PPL1から生成された200MHzのcore2 *ターミナル:19200、8N1 ******************************************************************************** 全般
記事全体を表示
コネクティビティソフトウェア: FreeRTOS でティックレスモードを実装 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> FreeRTOS は、ティックをカウントすることで、システム内の経過時間を追跡します。ティック・カウントは、ホストMCUで使用可能なタイマーの1つによって生成される定期的な割り込みルーチン内で増加します。FreeRTOS がアイドルタスクフックを実行している場合、マイクロコントローラを低電力モードにすることができます。低電力モードに応じて、1つ以上の周辺機器を無効にして、可能な限り最大限のエネルギーを節約できます。FreeRTOS ティックレスアイドルモードでは、アイドル期間中のティック中断を停止できます。ティック割込みを停止すると、ウェイクアップ・イベントが発生するまで、マイクロコントローラは大幅な省電力状態を維持できます。 アプリケーションは、次のFreeRTOSタスクを実行する前にマイクロコントローラをウェイクアップするモジュール(タイマー、ADCなど)を構成する必要があります。そのため、tickless idleが有効な場合にFreeRTOSが呼び出す関数であるvPortSuppressTicksAndSleepの実行中に、ウェイクアップモジュールを適切に設定するために、MCUがスリープ状態を維持できる最大時間を入力パラメータとして渡します。MCUがウェイクアップし、FreeRTOSのティック割り込みが再開されると、MCUがスリープ状態の間に失われたティックカウントの数を元に戻す必要があります。 ティックレスモードは、接続ソフトウェア FreeRTOS デモではデフォルトでは有効になっていません。この投稿では、有効にする方法 説明します。この例では、QN9080x を使用して実装を示します。 低電力 FreeRTOS ティックレス ダニ無し 変更は、次のファイルに実装されています。 \フレームワーク\LowPower\ソース\QN908XC\PWR.c \framework\LowPower\Interface\QN908XC\PWR_Interface.h \フリートス\fsl_tickless_generic.h \ソース\共通\ApplMain.c 次のファイルがプロジェクトから削除されました fsl_tickless_qn_rtc.c PWRです。C および PWR_Interface.h このファイルの変更は、RTC タイマーを使用して QN9080 をウェイクアップするための準備を目的としています。MKW41Z などの他のパーツは、この目的のために他のモジュール (LPTMR など) を有効にする場合があり、このファイルを変更する必要がない場合があります。 *** PWR.c *** RTC用のドライバを追加します。これは、QN908xをウェイクアップするために使用するタイマーです /*Tickless: Add RTC driver for tickless support */ #include "fsl_rtc.h"‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ローカル変数の追加 uint64_t mLpmTotalSleepDuration;        //Tickless uint8_t mPWR_DeepSleepTimeUpdated = 0;  //Tickless: Coexistence with TMR manager‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ プライベート機能を追加する uint32_t PWR_RTCGetMsTimeUntilNextTick (void);         //Tickless void PWR_RTCSetWakeupTimeMs (uint32_t wakeupTimeMs);   //Tickless void PWR_RTCWakeupStart (void);                        //Tickless‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ PWR.C.で次の変更を行います。必要なすべての変更は、変更の開始位置で "Start" と、変更の終了位置で "End" というコメントとしてマークされます #if (cPWR_UsePowerDownMode && (cPWR_EnableDeepSleepMode_1 || cPWR_EnableDeepSleepMode_2 || cPWR_EnableDeepSleepMode_3 || cPWR_EnableDeepSleepMode_4)) static void PWR_HandleDeepSleepMode_1_2_3_4(void) { #if cPWR_BLE_LL_Enable     uint8_t   power_down_mode = 0xff;     bool_t    enterLowPower = TRUE;     __disable_irq(); /****************START***********************************/     /*Tickless: Configure wakeup timer */     if(mPWR_DeepSleepTimeUpdated){       PWR_RTCSetWakeupTimeMs(mPWR_DeepSleepTimeMs);       mPWR_DeepSleepTimeUpdated = FALSE;        // Coexistence with TMR Manager     }         PWR_RTCWakeupStart(); /*****************END**************************************/     PWRLib_ClearWakeupReason();     //Try to put BLE in deep sleep mode     power_down_mode = BLE_sleep();     if (power_down_mode < kPmPowerDown0)     {         enterLowPower = false; // BLE doesn't allow deep sleep     }     //no else - enterLowPower is already true     if(enterLowPower)     { /****************START**************************/         uint32_t freeRunningRtcPriority; /****************END****************************/         NVIC_ClearPendingIRQ(OSC_INT_LOW_IRQn);         NVIC_EnableIRQ(OSC_INT_LOW_IRQn);         while (SYSCON_SYS_STAT_OSC_EN_MASK & SYSCON->SYS_STAT) //wait for BLE to enter sleep         {             POWER_EnterSleep();         }         NVIC_DisableIRQ(OSC_INT_LOW_IRQn);         if(gpfPWR_LowPowerEnterCb != NULL)         {             gpfPWR_LowPowerEnterCb();         } /* Disable SysTick counter and interrupt */         sysTickCtrl = SysTick->CTRL & (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);         SysTick->CTRL &= ~(SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);         ICSR |= (1 << 25); // clear PendSysTick bit in ICSR, if set /************************START***********************************/         NVIC_ClearPendingIRQ(RTC_FR_IRQn);         freeRunningRtcPriority = NVIC_GetPriority(RTC_FR_IRQn);         NVIC_SetPriority(RTC_FR_IRQn,0); /***********************END***************************************/         POWER_EnterPowerDown(0); //Nighty night! /************************START**********************************/         NVIC_SetPriority(RTC_FR_IRQn,freeRunningRtcPriority); /************************END************************************/         if(gpfPWR_LowPowerExitCb != NULL)         {             gpfPWR_LowPowerExitCb();         }         /* Restore the state of SysTick */         SysTick->CTRL |= sysTickCtrl;         PWRLib_UpdateWakeupReason();     }     __enable_irq(); #else     PWRLib_ClearWakeupReason(); #endif /* cPWR_BLE_LL_Enable */ } #endif /* (cPWR_UsePowerDownMode && cPWR_EnableDeepSleepMode_1) */ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ void PWR_SetDeepSleepTimeInMs(uint32_t deepSleepTimeMs) { #if (cPWR_UsePowerDownMode)     if(deepSleepTimeMs == 0)     {         return;     }     mPWR_DeepSleepTimeMs = deepSleepTimeMs; /****************START******************/     mPWR_DeepSleepTimeUpdated = TRUE; /****************END*********************/ #else     (void) deepSleepTimeMs; #endif /* (cPWR_UsePowerDownMode) */ }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ファイルの最後にある次の関数定義を追加/置換します /*--------------------------------------------------------------------------- * Name: PWR_GetTotalSleepDurationMS * Description: - * Parameters: - * Return: - *---------------------------------------------------------------------------*/ uint32_t PWR_GetTotalSleepDurationMS(void) {     uint32_t time;     uint32_t currentSleepTime;     OSA_InterruptDisable();     currentSleepTime = RTC_GetFreeRunningInterruptThreshold(RTC);     if(currentSleepTime >= mLpmTotalSleepDuration){     time = (currentSleepTime-mLpmTotalSleepDuration)*1000/CLOCK_GetFreq(kCLOCK_32KClk);     }     else{     time = ((0x100000000-mLpmTotalSleepDuration)+currentSleepTime)*1000/CLOCK_GetFreq(kCLOCK_32KClk);     }     OSA_InterruptEnable();     return time; } /*--------------------------------------------------------------------------- * Name: PWR_ResetTotalSleepDuration * Description: - * Parameters: - * Return: - *---------------------------------------------------------------------------*/ void PWR_ResetTotalSleepDuration(void) {     OSA_InterruptDisable();     mLpmTotalSleepDuration = RTC_GetFreeRunningCount(RTC);     OSA_InterruptEnable(); } /*--------------------------------------------------------------------------- * Name: PWR_RTCGetMsTimeUntilNextTick * Description: - * Parameters: - * Return: Time until next tick in mS *---------------------------------------------------------------------------*/ uint32_t PWR_RTCGetMsTimeUntilNextTick (void) {     uint32_t time;     uint32_t currentRtcCounts, thresholdRtcCounts;     OSA_InterruptDisable();     currentRtcCounts = RTC_GetFreeRunningCount(RTC);     thresholdRtcCounts = RTC_GetFreeRunningResetThreshold(RTC);     if(thresholdRtcCounts > currentRtcCounts){     time = (thresholdRtcCounts-currentRtcCounts)*1000/CLOCK_GetFreq(kCLOCK_32KClk);     }     else{     time = ((0x100000000-currentRtcCounts)+thresholdRtcCounts)*1000/CLOCK_GetFreq(kCLOCK_32KClk);     }     OSA_InterruptEnable();     return time; } /*--------------------------------------------------------------------------- * Name: PWR_RTCSetWakeupTimeMs * Description: - * Parameters: wakeupTimeMs: New wakeup time in milliseconds * Return: - *---------------------------------------------------------------------------*/ void PWR_RTCSetWakeupTimeMs (uint32_t wakeupTimeMs){     uint32_t wakeupTimeTicks;     uint32_t thresholdValue;     wakeupTimeTicks = (wakeupTimeMs*CLOCK_GetFreq(kCLOCK_32KClk))/1000;     thresholdValue = RTC_GetFreeRunningCount(RTC);     thresholdValue += wakeupTimeTicks;     RTC_SetFreeRunningInterruptThreshold(RTC, thresholdValue); } /*--------------------------------------------------------------------------- * Name: PWR_RTCWakeupStart * Description: - * Parameters: - * Return: - *---------------------------------------------------------------------------*/ void PWR_RTCWakeupStart (void){   if(!(RTC->CNT2_CTRL & RTC_CNT2_CTRL_CNT2_EN_MASK)){     RTC->CNT2_CTRL |= 0x52850000 | RTC_CNT2_CTRL_CNT2_EN_MASK | RTC_CNT2_CTRL_CNT2_WAKEUP_MASK | RTC_CNT2_CTRL_CNT2_INT_EN_MASK;   }   else{     RTC->CNT2_CTRL |= 0x52850000 | RTC_CNT2_CTRL_CNT2_WAKEUP_MASK | RTC_CNT2_CTRL_CNT2_INT_EN_MASK;   } } ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ PWR_Interface.h *** ファイルの末尾に次の関数宣言を追加します /*--------------------------------------------------------------------------- * Name: PWR_GetTotalSleepDurationMS * Description: - * Parameters: - * Return: - *---------------------------------------------------------------------------*/ uint32_t PWR_GetTotalSleepDurationMS(void); /*--------------------------------------------------------------------------- * Name: PWR_ResetTotalSleepDuration * Description: - * Parameters: - * Return: - *---------------------------------------------------------------------------*/ void PWR_ResetTotalSleepDuration(void); #ifdef __cplusplus } #endif #endif /* _PWR_INTERFACE_H_ */ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ FSL_TICKLESS_GENERIC 次の変更は、低電力期間中に欠落したティックを回復するためにシステムを準備することを目的としています。 fsl_tickless_generic.h で次の変更を行います。必要なすべての変更は、変更の開始位置で "Start" と、変更の終了位置で "End" というコメントとしてマークされます /* QN_RTC: The RTC free running is a 32-bit counter. */ #define portMAX_32_BIT_NUMBER (0xffffffffUL) #define portRTC_CLK_HZ (0x8000UL) /* A fiddle factor to estimate the number of SysTick counts that would have occurred while the SysTick counter is stopped during tickless idle calculations. */ #define portMISSED_COUNTS_FACTOR (45UL) /* * The number of SysTick increments that make up one tick period. */ /****************************START**************************/ #if configUSE_TICKLESS_IDLE == 1     static uint32_t ulTimerCountsForOneTick; #endif /* configUSE_TICKLESS_IDLE */ /************************END*********************************/ /* * Setup the timer to generate the tick interrupts. */ void vPortSetupTimerInterrupt(void); #ifdef __cplusplus } #endif #endif /* FSL_TICKLESS_GENERIC_H */ ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ApplMain.c これがメインのアプリケーションファイルです。ここでは、適切なAPIを呼び出して、低電力モードでMCUに入り、ティックリカバリシーケンスを実行します。 必要なRTCおよびFreeRTOSヘッダーファイルを含める /*Tickless: Include RTC and FreeRTOS header files */ #include "fsl_rtc.h" #include "fsl_tickless_generic.h" #include "FreeRTOS.h" #include "task.h"‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ QN9080には、いくつかの低電力モードが含まれています。スリープモードでは、ほとんどのモジュールがアクティブに保たれます。パワーダウンモードでは、ほとんどのモジュールがオフになりますが、必要に応じてMCUをウェイクアップするために、一部のモジュールをアクティブなままに構成できます。ティックレス FreeRTOS を使用すると、次の準備完了タスクが実行される前に、何らかのタイマーでウェイクアップする必要があります。QN908xの場合、このタイマーはRTCであり、32.768kHz発振器がアクティブ状態を維持する必要があります。コネクティビティソフトウェアのPower Libを、32.768kHzの発振器をオンに維持するディープスリープモード3(QN908xの場合はPower Downモード0)を使用するように変更します。この変更は、 main_task 関数に実装されています。 #if !defined(MULTICORE_BLACKBOX)         /* BLE Host Stack Init */         if (Ble_Initialize(App_GenericCallback) != gBleSuccess_c)         {             panic(0,0,0,0);             return;         } #endif /* MULTICORE_BLACKBOX */ /*************** Start ****************/ #if (cPWR_UsePowerDownMode)     PWR_ChangeDeepSleepMode(3); #endif /*************** End ****************/     }         /* Call application task */     App_Thread( param ); }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ また、ティックレスFreeRTOSには、次のタスクを実行する前にMCUがスリープ状態を維持できるRTOSティックの量を入力パラメータとして取る特別なアイドル関数が必要です。次の変更により、ティックレス モードが有効になっている場合、接続ソフトウェアのデモで提供されるデフォルトのアイドル機能が無効になります。 /************************************************************************************ ************************************************************************************* * Private prototypes ************************************************************************************* ************************************************************************************/ #if (cPWR_UsePowerDownMode || gAppUseNvm_d) #if (mAppIdleHook_c)     #define AppIdle_TaskInit()     #define App_Idle_Task() #else #if (!configUSE_TICKLESS_IDLE)     static osaStatus_t AppIdle_TaskInit(void);     static void App_Idle_Task(osaTaskParam_t argument); #endif // configUSE_TICKLESS_IDLE #endif #endif‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ /************************************************************************************ ************************************************************************************* * Private memory declarations ************************************************************************************* ************************************************************************************/ /******************************** Start ******************************/ #if ((cPWR_UsePowerDownMode || gAppUseNvm_d) && !configUSE_TICKLESS_IDLE) /******************************** End ******************************/ #if (!mAppIdleHook_c) OSA_TASK_DEFINE( App_Idle_Task, gAppIdleTaskPriority_c, 1, gAppIdleTaskStackSize_c, FALSE ); osaTaskId_t gAppIdleTaskId = 0; #endif #endif  /* cPWR_UsePowerDownMode */‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ #if !gUseHciTransportDownward_d         pfBLE_SignalFromISR = BLE_SignalFromISRCallback; #endif /* !gUseHciTransportDownward_d */ /**************************** Start ************************/ #if ((cPWR_UsePowerDownMode || gAppUseNvm_d) && !configUSE_TICKLESS_IDLE) /**************************** End ************************/ #if (!mAppIdleHook_c)         AppIdle_TaskInit(); #endif #endif‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ /***************************START**************************/ #if (cPWR_UsePowerDownMode && !configUSE_TICKLESS_IDLE) /******************************END***************************/ static void App_Idle(void) {     PWRLib_WakeupReason_t wakeupReason;     if( PWR_CheckIfDeviceCanGoToSleep() )     {         /* Enter Low Power */         wakeupReason = PWR_EnterLowPower(); #if gFSCI_IncludeLpmCommands_c         /* Send Wake Up indication to FSCI */         FSCI_SendWakeUpIndication(); #endif #if gKBD_KeysCount_c > 0         /* Woke up on Keyboard Press */         if(wakeupReason.Bits.FromKeyBoard)         {             KBD_SwitchPressedOnWakeUp();             PWR_DisallowDeviceToSleep();         } #endif     }     else     {         /* Enter MCU Sleep */         PWR_EnterSleep();     } } #endif /* cPWR_UsePowerDownMode */ #if (mAppIdleHook_c) void vApplicationIdleHook(void) { #if (gAppUseNvm_d)     NvIdle(); #endif /*******************************START****************************/ #if (cPWR_UsePowerDownMode && !configUSE_TICKLESS_IDLE) /*********************************END*******************************/     App_Idle(); #endif } #else /* mAppIdleHook_c */ /******************************* START ****************************/ #if ((cPWR_UsePowerDownMode || gAppUseNvm_d) && !configUSE_TICKLESS_IDLE) /******************************* END ****************************/ static void App_Idle_Task(osaTaskParam_t argument) {     while(1)     {   #if gAppUseNvm_d         NvIdle(); #endif         #if (cPWR_UsePowerDownMode)         App_Idle(); #endif         /* For BareMetal break the while(1) after 1 run */         if (gUseRtos_c == 0)         {             break;         }     } } ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ デフォルトのアイドル機能を無効にしたら、特別なアイドル機能を実装する必要があります。ApplMain.c の末尾に次のコードを追加しますファイル。 /*Tickless: Implement Tickless Idle */ #if (cPWR_UsePowerDownMode && configUSE_TICKLESS_IDLE) extern void vPortSuppressTicksAndSleep( TickType_t xExpectedIdleTime ) {     uint32_t time_ms = xExpectedIdleTime * portTICK_PERIOD_MS;     uint32_t tmrMgrExpiryTimeMs;     ulTimerCountsForOneTick = 160000;//VALUE OF THE SYSTICK 10 ms #if (cPWR_UsePowerDownMode)     PWRLib_WakeupReason_t wakeupReason;         //TMR_MGR: Get next timer manager expiry time     tmrMgrExpiryTimeMs = TMR_GetFirstExpireTime(gTmrAllTypes_c);     // TMR_MGR: Update RTC Threshold only if RTOS needs to wakeup earlier     if(time_ms<tmrMgrExpiryTimeMs){       PWR_SetDeepSleepTimeInMs(time_ms);     }         PWR_ResetTotalSleepDuration();     if( PWR_CheckIfDeviceCanGoToSleep() )     {         wakeupReason = PWR_EnterLowPower();                 //Fix: All the tick recovery stuff should only happen if device entered in DSM         xExpectedIdleTime = PWR_GetTotalSleepDurationMS() / portTICK_PERIOD_MS;     // Fix: ticks = time in mS asleep / mS per each tick (portTICK_PERIOD_MS)         /* Restart SysTick so it runs from portNVIC_SYSTICK_LOAD_REG         again, then set portNVIC_SYSTICK_LOAD_REG back to its standard         value. The critical section is used to ensure the tick interrupt         can only execute once in the case that the reload register is near         zero. */         portNVIC_SYSTICK_CURRENT_VALUE_REG = 0UL;         portENTER_CRITICAL();         portNVIC_SYSTICK_CTRL_REG |= portNVIC_SYSTICK_ENABLE_BIT;         vTaskStepTick( xExpectedIdleTime );         portNVIC_SYSTICK_LOAD_REG = ulTimerCountsForOneTick - 1UL;         portEXIT_CRITICAL(); #if gKBD_KeysCount_c > 0         /* Woke up on Keyboard Press */         if(wakeupReason.Bits.FromKeyBoard)         {           KBD_SwitchPressedOnWakeUp();           PWR_DisallowDeviceToSleep();         } #endif     }     else     {       /* Enter MCU Sleep */       PWR_EnterSleep();     } #endif /* cPWR_UsePowerDownMode */ } #endif  //cPWR_UsePowerDownMode && configUSE_TICKLESS_IDLE ‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 前の関数から、ulTimerCountsForOneTick の値を使用して、ウェイクアップ後に RTOS ティック タイマーのカウントを復元します。この値は、FreeRTOSConfig.h で定義されている RTOS ティック間隔によって異なりますは、次の式を使用して計算されます。 SYST_RNR = F_Systick_CLK(Hz) * T_FreeRTOS_Ticks(ms) ここで、 F_Systick_CLK(Hz)= AHBまたはSYST_CSR選択の32KHz T_FreeRTOS_Ticks(ms) = ティックカウント値。 FreeRTOSConfig.h 最後に、FreeRTOSConfig.h でファイルで、configUSE_TICKLESS_IDLE が 1 に設定されていることを確認します * See http://www.freertos.org/a00110.html. *----------------------------------------------------------*/ #define configUSE_PREEMPTION                    1 #define configUSE_TICKLESS_IDLE                 1 //<--- /***** Start *****/ #define configCPU_CLOCK_HZ                      (SystemCoreClock) #define configTICK_RATE_HZ                      ((TickType_t)100) #define configMAX_PRIORITIES                    (18) #define configMINIMAL_STACK_SIZE                ((unsigned short)90)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ ティックレスRTOSのテスト ティックレス サポートが正常に追加されたかどうかをテストするために、LED を切り替えるサンプル アプリケーションが実装されています。このアプリケーションは、500mSごとにLEDを切り替え、アイドル時間中にDSM3にMCUに入るようにRTOSタイマを設定します。この目的のために、Power Profiling デモが使用されました。 power_profiling.c 次のヘッダー ファイルが含まれていることを確認します #include "FreeRTOS.h" #include "task.h"‍‍‍‍ 500mSごとにLEDを点滅させるRTOSタスクを作成します。まず、タスク関数、タスクID、およびタスク自体を宣言します。 void vfnTaskLedBlinkTest(void* param); //New Task Definition OSA_TASK_DEFINE(vfnTaskLedBlinkTest, 1, 1, 500, FALSE ); osaTaskId_t gAppTestTask1Id = 0; // TestTask1 Id‍‍‍‍‍‍ BleApp_Init関数内に新しいタスクを作成します void BleApp_Init(void) {     PWR_AllowDeviceToSleep();     mPowerState = 0;   // Board starts with PD1 enabled     /******************* Start *****************/     gAppTestTask1Id = OSA_TaskCreate(OSA_TASK(vfnTaskLedBlinkTest), NULL); //Task Creation     /*******************  End  *****************/ }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ 最後に、タスク関数定義をファイルの最後に追加します。 void vfnTaskLedBlinkTest(void* param) {     uint16_t wTimeValue = 500; //500ms     while(1)     {         LED_BLUE_TOGGLE();         vTaskDelay(pdMS_TO_TICKS(wTimeValue));     } }‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍ MCUXpresso IDE の電力消費は、 Power Measurement Tool を使用して監視できます。これにより、消費された電流を確認し、実装が期待どおりに機能していることを証明できます。 電力測定ツールを構成する 消費電流 BLEソフトウェア Re:コネクティビティソフトウェア:FreeRTOSでティックレスモードを実装する <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 電力プロファイルは、ティックレスモードやベアボードモードでも、妥当な消費電力に達する可能性があります。 ただし、1つのトラップがあり、注意が必要です。 電源モードPD1から回復すると、スリープ前に32K OSCを閉じたティックレスアイドルタスクで、電源 PWRLib_LPTMR_Stopない周辺機器を操作するためにクラッシュします。 電源モードがPD0の場合、OSCが動作し、スリープ中に電源が供給されたままになっている場合に問題は発生しませんでした。 修正方法: PD1またはPD0からの回復を判断します。 Re:コネクティビティソフトウェア:FreeRTOSでティックレスモードを実装する <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 温度センサーの例は、ティックレスモードで動作するようです。 ただし、パワープロファイルの例に比べてスリープ消費量がわずかに多くなります Re:コネクティビティソフトウェア:FreeRTOSでティックレスモードを実装する <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ティックレスフリートスと低電力動作をテストするには、どの例を使用するのが最適ですか? Re:コネクティビティソフトウェア:FreeRTOSでティックレスモードを実装する <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Hi: 最新のSDK v2.2はfreertosのticklessをサポートしており、app_preinclude.hで以下のマクロを有効にする必要があります configUSE_TICKLESS_IDLE:为1 以下定义用于计算tickless消逝时间 /* PD1ではRTCが動作していないため、PWRモジュールでRTC関連コードを無効にします */ #define cPWR_EnableLpTmrRunning 1 #define cPWR_EnablePD0RtcInterrupt 1
記事全体を表示
在 wait_event_interruptible(vt_event_waitqueue, vw->done) 中无限期休眠; <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 一位i.MX50客户最近遇到了这样的内核错误。Android UI 没有响应,因为暂停工作队列被阻塞: 暂停 pm_suspend 进入状态 suspend_prepare / suspend_finish pm_prepare_console / pm_restore_console               vt_move_to_console vt_waitactive                   vt_event_wait wait_event_interruptible 确认同样的错误也可能发生在运行linux 3.0.35 的 imx6SL 上。 例如通过 echo standalone/ mem > /sys/power/state 需要经过一千多次暂停/恢复循环才能重现该问题。 自Linux 3.6 以来,该错误修复已被合并: commit a7b12929be6cc55eab2dac3330fa9f5984e12dda Android i.MX2x i.MX50 i.MX51 i.MX53 i.MX6_全部 Linux
記事全体を表示
MPC5744P DCF配置器 详细描述:                 此配置工具简化了 MPC5744P 设备的 DCF 记录计算。                 查看HowToUse表以获取简单指南,然后使用DCF表                 说明: -必须启用宏!   BR, Petr
記事全体を表示
MPC5744P DCFコンフィギュレータ 詳細な説明:                 この設定ツールは、MPC5744PデバイスのDCFレコードの計算を簡素化します。                 簡単なガイドラインについては、 HowToUse シートを見てから、 DCF シートで作業してください                 メモ: - マクロを有効にする必要があります。         BR, Petr
記事全体を表示
SLN-PWRB-QC4T:急速充電4+パワーバンク <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Overview 特長 ボード Overview 15ワットのQi認定ワイヤレス電源出力を備えたNXP Quick Charge 4+パワーバンクは、最新の有線および無線テクノロジーをすべてサポートします。Qualcomm™ Quick Charge 4+テクノロジーを搭載した当社のパワーバンクは、スマートフォン、時計、タブレット、2-in-1製品、ノートブック、およびQualcomm Snapdragon™モバイルプラットフォームとプロセッサを搭載したその他のデバイスの超高速同時マルチチャネル充電を提供します。NXPパワーバンクでのわずか5分の充電で、5時間のバッテリー寿命を実現します。 新しいPower Delivery(PD 3.0)テクノロジーは、NXPパワーバンクのプログラマブル電源(PPS)と組み合わせて、Quick Charge 4+デバイスをサポートし、Quick Charge 2.0および3.0テクノロジーとの下位互換性を提供します。NXPパワーバンクシステムソフトウェアの統合には、ワイヤレス電源およびバッテリ管理、PDスタック、および完全にカスタマイズ可能なアプリケーション用のよりプログラム可能なAPIも含まれています。この新しい電源ソリューションは、USB-Cの多くの利点と規格を活用し、Quick Chargeによる入出力の双方向USB電源供給を実現します。偽造防止およびOEM固有の認証、および正確な電圧、電流、温度保護により、安全性とセキュリティが強化されます。 特長 デュアルウェイUSB Type-Cは入力と出力をサポート 入力と出力、PD + PPS、QC2、QC3、QC4の急速充電 2Sバッテリー対応(能力~10,000mAh)、出力>50W 統合ワイヤレス15Wトランスミッターは、Samsung ®  およびApple ®  デバイスの急速充電をサポートします デジタル制御昇降圧コンバータ 1つの制御ICで昇降圧コンバータ、充電、Qualcommアルゴリズム、PD通信、ワイヤレスパワーマネージメントを制御 ボード レガシーデザイン
記事全体を表示
[已完成] MCUXpresso 配置工具的 UX 设计 [标题 CZ/SK] UX 设计预 MCUXpresso 配置工具 转让 UX(用户体验)设计是选择软件应用程序的主要决定因素之一。分析 MCUXpresso 配置工具的 UX,特别是其用户界面。建议具体的用户界面改进。创建建议改进的示例。将示例与当前解决方案进行比较。在应用程序用户的帮助下测试示例。 捷克共和国/斯洛伐克共和国任务 UX design aplikácie je jedným z kľúčových faktorov na základe ktorých sa užívateľ rozhoduje o používaní aplikácie. Analyzujte UX aplikácie MCUXpresso Configuration Tools so zameraním na GUI. Navrhnite konkrétne vylepšenia pre prácu s aplikáciou. Vytvorte ukážky navrhnutých vylepšení. Tieto ukážky porovnajte s existujúcim riešením. Vytvorené ukážky otestujte na užívateloch aplikácie. 语言 CZ/SK/EN   领导者 David Danaj   联系信息 大学团队 NXP Semiconductors CZ 通过电子邮件申请 完成
記事全体を表示
在 EmbSysRegView Eclipse 插件中使用 S32K CMSIS-SVD 文件 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 问候, 如果您想在 Eclipse 环境中使用开源 EmbSysRegView 插件:本文介绍如何向其中添加 S32K CMSIS-SVD 文件: 将 CMSIS-SVD 文件添加到 EmbSysRegView 0.2.6.r192 和 Eclipse 祝你 SVD 工作愉快 🙂 Erich 概述
記事全体を表示
hello2twrk70f120m_CMSIS_FPU.zip <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> TWR-K70F120M で CMSIS3.20 を MQX4.0.x に統合する例 ( 浮動小数点ユニット) を CW10.4 で MQX4.0.2\mqx\examples\hello2 で プロジェクト。 添付のZIPファイル(hello2twrk70f120m_CMSIS_FPU.zip)にはMSWordがあります 使用した手順を詳しく説明したドキュメント。そのドキュメント名は TWR-K70F120M_CMSIS_CW10.4_MQX4.0.x.docx です。 よろしくお願いします。 David <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> TWR-K70F120M で CMSIS3.20 を MQX4.0.x に統合する例 ( 浮動小数点ユニット) を CW10.4 で MQX4.0.2\mqx\examples\hello2 で プロジェクト。 添付のZIPファイル(hello2twrk70f120m_CMSIS_FPU.zip)にはMSWordがあります 使用した手順を詳しく説明したドキュメント。そのドキュメント名は TWR-K70F120M_CMSIS_CW10.4_MQX4.0.x.docx です。 よろしくお願いします。 David
記事全体を表示
ソフトウェア無線とIP-FMシームレスブレンディング <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Demo このデモは、ソフトウェア定義ラジオによるマルチスタンダードデジタルラジオと、放送ラジオとインターネットラジオの組み合わせを組み合わせて、エンドユーザーに最高のオーディオリスニング体験を提供します。 デバイスの別のFWスタートアップをダウンロードすることにより、このHWプラットフォームは、DAB +、HD-Radio、およびDRM標準をサポートする、全世界のグローバルデジタルラジオ受信機として機能します。 このデモでは、インターネット/IP(最近ますます多くの車に採用されています)がラジオ放送の代替手段としても使用できることも示しています。2つのストリーム(IP-FM)を位置合わせすることで、ラジオはIPとFMをシームレスに切り替えて、特にラジオの受信状態が毎秒変化する車内で、リスナーに連続したオーディオストリームを作成できます     デモ/製品機能 デジタル無線機および処理システムオンチップ(SAF360x) カーラジオデジタルシグナルプロセッサ(SAF775x)   NXPの推奨事項 マルチスタンダードデジタルラジオの機能と利点 ソフトウェア無線技術   リンクス ソフトウェア無線:車載エンターテイメント向けグローバル・プラットフォーム     A06班 オートモーティブ
記事全体を表示
IMG_20131126_190556.jpg <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> フリースケール-PC PCI Expressコネクタ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> フリースケール-PC PCI Expressコネクタ
記事全体を表示
すべてのボード GTK glade <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> GTK+ は、クロスプラットフォームの互換性と使いやすい API を誇るグラフィカルユーザーインターフェースを作成するための、非常に使いやすく機能豊富なツールキットです。GTK+ Cで書かれていますが、C ++、Python、C#など、他の多くの一般的なプログラミング言語にバインドされています。GTK+ は GNU LGPL 2.1 の下でライセンスされており、ライセンス料やロイヤリティなしで GTK+ を使用してフリーソフトウェアとプロプライエタリソフトウェアの両方を開発できます。[出典: gtk.org] GTK+ はグラフィカル ライブラリであるため、GTK+ を使用するプログラムは、C、C++、Python、Perl、PHP、Ruby などの多くの言語で実行できます。ここでは、Cの例を挙げます。 GTKで簡単なプログラムを作成する方法 GTK+ を使用してグラフィカルインターフェイス (GUI) プログラムを作成する簡単な方法は、Glade をグラフィカルエディタとして使用することです。 Glade3 スクリーンショット UbuntuにGladeをインストールするには、次のように入力します。 $sudo apt-get glade-3をインストールする 古いGladeのバージョンは、Cコードの生成に使用されていました。現在、version は .glade のみを生成します.xmlで解析できるファイルウィジェットの階層を記述するファイル。 サンプルプログラムをホスト上で作成、コンパイル、テストし、その後、iMXプラットフォーム用にクロスコンパイルし、PDK i.MX31開発キットで動作することを確認しましょう。 ホストPCで開発するには、libgtk2.0-devをインストールしてください。タイピング: $sudo apt-get install libgtk2.0-dev
記事全体を表示
RD3PHASEPMSMVCQE: 基于 Kinetis ® K40 MCU 的三相 PMSM 矢量控制参考设计 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> Overview 特性 结构框图 设计资源 Overview 基于 Kinetis ® K40 MCU 参考设计使用正交编码器的三相 PMSM 矢量控制展示了 Kinetis K40 Arm ® Cortex ® -M4 MCU 驱动高级电机控制应用的能力。 针对NXP ® Tower ®快速原型系统作为硬件开发平台。 将该平台与可用的嵌入式源程序配套使用,可快速开发自己的工业驱动器应用。 要成功地执行矢量控制算法,获得有关电机轴位置的信息至关重要。 通过正交编码器可获知整个电机速率范围内的电机轴位置信息,使电机能够在零速以全扭矩启动。 特性 PMSM矢量控制使用正交编码器作为位置传感器 瞄准 ® 塔 快速原型系统(K40塔板、塔式三相低压功率级) 带速度闭环的矢量控制 两个方向旋转 应用速度范围为0%至100%额定速率(无磁场削弱) 通过 Kinetis ® 上的用户按钮进行操作 K40 塔板或通过 FreeMASTER 软件 结构框图 设计资源 传统设计
記事全体を表示