タグ付けされた質問 「microcontroller」

中央処理装置(CPU)、メモリ、および(一般的に)緊密に結合されたスタンドアロンの各種I / Oペリフェラル(UART、ADC、DAC、汎用I / O、I2Cなど)を含むデバイスパッケージ。

8
MCUを使用した関数型プログラミング
Haskell、LISP、Schemeなどの関数型言語を使用すると、プログラマは関数型プログラミングパラダイムを使用してすばやく作業できます。それらには非効率性がありますが、私のアプリケーションはプログラム自体の効率よりもプログラマーの効率性を重視しています。 マイクロコントローラーで関数型プログラミングを使用して、マシン制御などを行いたい 最小システムリソースなど、どのような制限がありますか? これらの言語の実装例は何ですか?

5
MCUのADC入力インピーダンス
一般的なMCU ADCの入力インピーダンスは何ですか?この場合、PIC24FJ64GA004を使用しています。高速サンプリングは必要ありません-1秒あたり最大100サンプルです。 抵抗分割器を100k抵抗と10k抵抗で接続したいので、インピーダンスは1Mより高くする必要があります。そうしないと、インピーダンスが測定値のスキューを開始します。

10
趣味にやさしいマイクロコントローラーでRAMから命令を実行する
私のプロジェクトの1つは、マイクロコントローラーに保存されていない(代わりにSDカードに保存されている)プログラムを実行できることから大きな恩恵を受けます。 そのため、SDカードからRAMにコードをロードし、RAMからコードを実行できるデバイスを探しています。現在、私はPicKit2に付属しているプログラマーしかいないので、PICを使い続けたいと思っています。 誰がこれを行うことができるかを知っていますか?これに対応できるPICがない場合、これに対応するマイクロコントローラーは何ですか?できればブレッドボード互換パッケージで利用できるもの。

5
FPGAはそのようなプロジェクトに実行可能ですか?
私は現在、画面表示プロジェクトであるSuper OSDに取り組んでいます。http://code.google.com/p/super-osdにすべての詳細があります。 現在、私はdsPIC MCUを使用して仕事をしています。これは非常に強力なDSP(40 MIPS @ 80 MHz、3レジスタシングルサイクル操作およびMACユニット)であり、重要なことには、DIPパッケージで提供されます(ブレッドボードを使用してプロトタイプを作成しているため)。 OSDを実行することにより、パフォーマンスの最後のすべてのビットが本当に得られます-チップの出力ステージでピクセルあたり約200nsまたは10サイクルあるため、この部分でコードを非常に最適化する必要があります(このため、常に書き込まれますアセンブリ。) このようなチップの並列アーキテクチャにより、OSDを実行する単純なロジックプログラムを使用できるため、FPGAの使用を検討していました。線の描画やアルゴリズムコードのようなものはMCUで処理されますが、実際の出力はFPGAで行われます。そして、速度を向上させるために、FPGAに統合したいピクセルの設定や水平線と垂直線の描画などの簡単なこともあります。 いくつか質問があります: 大幅に費用がかかりますか?私が見つけた最も安いFPGAはそれぞれ£5で、dsPICはそれぞれ£3です。それでもっと費用がかかりますが、いくらですか? dsPICはSO28パッケージに収まります。SO28やTQFP44よりも大きくなりたくありません。私が見たほとんどのFPGAは、BGAまたはTQFP> 100パッケージで提供されていますが、せん断サイズと自分ではんだ付けするのが難しいため、現時点ではオプションではありません。 FPGAはどのくらいの電流を使用しますか?dsPICソリューションは現在約55mA +/- 10mAを消費しますが、現時点では問題ありません。FPGAは多かれ少なかれ消費しますか?それは可変ですか、それともdsPICのようにほとんど静的ですか? OSDグラフィックを保存するには、少なくとも12KBのグラフィックメモリが必要です。FPGAはチップ上でこの種のメモリを利用できますか、それとも外部チップでのみ利用可能ですか?

6
マイクロコントローラに電力を供給する最良の方法、SMPS vsリニアレギュレータ
12Vアダプターと2S 7.4V Li-ionバッテリーを使用して電子機器に電力を供給していますが、MCUにも電力を供給したいと考えています。アダプターとバッテリーを切り替えるには、TIのBQ24133を使用しています。 STM32L4 MCUと、カスタムPCBで3.3Vを使用する他のコンポーネントを使用します。3V3のすべてが一緒になっている場合、フル動作モードでは最大150 mAを使用します。 私は最高の/最も安いソリューションを探しています。 1.降圧コンバータとリニアリニアレギュレータを使用してMCUに電力を供給することの違いは何ですか? 2.電圧に大きな差があるため(12-3.3 = 8.7、8.7 * 0.15 = 1.3W)、リニアレギュレータ(小さなパッケージ)が非常に熱くなるため、悪い考えでしょうか。 3.スイッチングの周波数、または出力電圧リップル(ノイズ)は、MCUの通常の動作に大きな影響を与えますか? 4.結論として、6Vから12Vの入力電圧で電力を供給する最良の方法は何ですか? 忍耐とご回答ありがとうございます。 答えてくれてありがとう。あなたはすべてとても役に立ちました。今まで、私は自分のプロジェクトにリニアを使用していましたが、今はお金を稼ぐかもしれません。私がこれを尋ねた理由をフォローアップし、私が作っているものを確認したい場合は、このリンクに従ってください


1
I2C STM32F0 HALライブラリを使用したレジスターのアドレス指定
私はSTMのCUBEおよびHAL_librariesを使用するのが非常に初めてです。32ピンのSTM32F0マイクロコントローラを使用しています。I2Cの回路図は正しいです。ここで少し助けが必要です。 I2C通信を使用する静電容量センサー(FDC1004)があります。データを読み取るには、これらのレジスタに書き込む必要があります。 STARTリクエストフォームマスターをスレーブに正しく送信するにはどうすればよいですか(スレーブアドレスはA0)。 ポインタを0x0Cレジスタに設定する方法は? データシートでは、(レジスタ0x0C:bit [7:4])から1を参照しています。)どうすればよいですか?そして最後に、同じレジスタから読み取る方法は? さらに、DONE_xフィールド(レジスタ0x0C:bits [3:0])を読み取ってから、それを読み取る必要がありますか? しかし、私が適切なレジスタに対応しているかどうかはわかりません!センサーからデータが返されないからです! これが私のコードです: int I2Ccomm () { HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x0C, 10, 100); //start bit and pointer to register HAL_Delay(50); HAL_I2C_Master_Transmit(&hi2c1,0xA1,0x054, 10, 100); // setting the register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x0C, 10, 100); //read from this register HAL_Delay(50); HAL_I2C_Master_Receive(&hi2c1, 0xA0, 0x02, 10, 100); //read data from …

1
ミックスドシグナルシステムにおけるPCBマイクロコントローラーのレイアウト
これはこの質問の直接の続きです。これが私のレイアウトです。マイクロコントローラー側についてどう思いますか? 2019年4月更新:2016年春/夏にボードを構築しましたが、ここで結果を更新することはできませんでした。ボードは正常に動作し、デジタルノイズのアナログ信号への唯一の観測可能なリークは、レイアウト/接地ではなく、アナログ/デジタルインターフェイスの特定の不適切な回路設計の選択によるものでした(そして、後のリビジョンで修正することで、その小さなノイズも除去されました)。 。ここで私は商業用ボードを持っていて、CPUセクションのデザインは主にここに示すレイアウトに基づいており、EU EMCテストに合格しているので、このレイアウトは少なくとも十分に機能します。 実際の古い質問は次のとおりです。 編集:アルマンダスの答えに基づいて、私は今マイクロコントローラーのレイアウトが十分に良いという印象を受けています。デジタルノイズがアナログ側に漏れないようにするという点で、これがどれほど優れているかについて、誰かがもっと言いたいことがあれば、私はまだ非常に興味があります。もちろん、マイクロコントローラー側についてさらにコメントがあれば歓迎します。 スタックアップは TOP:シグナル GND:ソリッドグラウンドプレーン、どこにもカットやトラックがない PWR:電源 BOT:シグナル TOP(赤)およびPWR(紫)レイヤー、上部シルクスクリーン付き[ 下の更新を参照 ] BOT(緑)、上記との比較のための上部シルクスクリーン付き デジタル/アナログの分割(論理的には、グランドプレーンはソリッドです)はここで左/右です。電力(+3.3デジタル、DACおよびMUX、アナログ)は左下隅に入り、3つのキャップには47ufのリザーバーキャップがあります。フェライトビーズ(FB101)は、+ 3.3VトラックとDACおよびMUXをuC電源から分離します。uCは左上隅にあり、TOPの下のプレーンはローカルアースで、C720の近くのビアでGNDに接続されています。± 15±15\pm15 uCはSTM32F103VFであり、72MHzで実行します。水晶は8MHzです。uCの右側には、「Control 1」とマークされたセクションがあり、2つのDACと1つのマルチプレクサが含まれ、uCの内部DAC1の出力を多重化します。右下には、「Control 2」の近くにもう1つのマルチプレクサがあり、uCのDAC2を多重化しています。uCのDACからの信号をマルチプレクサーに行く前にそれらをバッファーするオペアンプ(UREF1)に送るトラックは、ビアからC712の右上に行く2つのトラックです。DACは、uCの右上隅から離れるSPIバスに接続されています。 DACとマルチプレクサーは、直接オーディオではなく、右側のアナログサウンドジェネレーター(ほとんど表示されていません)の制御信号を生成します。しかし、私はそれらの重要なデジタルクロストークが生成されたオーディオでも聞こえると予想しますが、これは悪いことです。私は kHzの制御レートを目指しています。つまり、8ウェイマルチプレクサーが kHzのレートで新しいサンプル値を取得します。111888 uCを去る他のトラックは次のとおりです: MUX1の場合はuCの上から、MUX2の場合は右側から、MUXのアドレスを選択して有効にします。 PWM信号は、抵抗アレイRR901に送られます。これは私が試していることであり、本質的にPWM波形を特定の方法で組み合わせることによって波形を生成します。これが機能しない場合、またはこのパスを介したノイズリークが多すぎる場合は問題ありません。次のリビジョンでは省略します。RR901を省略した場合、このパスからのノイズリークは基本的にないと思いますか? 最終オーディオ出力(図示せず)からuCの右下側のピン26に送られるADC信号。これは、有効な10ビット程度の精度が得られる限り、アナログ側の特定の機能を調整するために使用されます(12ビットADCです)。 パワープレーンでは、DAC / ADCリファレンスはUREF1から取得されます(実際には特定のリファレンス電圧は必要ありませんが、DACの最大出力と正確に比較する必要があります)。 GPIOは、デジタルセクションとアナログセクションの間の一部の抵抗(R713とR710など)に接続し、アナログセクションのさまざまなもののオンとオフを切り替えます。RにはCが付いており、uCからのデジタルノイズを除去しようとします。この質問を参照してください。 最後に、RCネットワークR715、R716、C709は、GPIOのステップ入力として使用されるGPIOの出力をフィルタリングおよび減衰し、VCFをキャリブレーションします。 私が知りたいいくつかの特定のポイント: クリスタルは十分に近く、適切に配線されていますか?uCアナログセクションのデカップリングキャップをクリスタルとuCの間に配置しなければなりませんでした。 C715はVDDAのデカップリングキャップです。Vref +、Vref-のデカップリングキャップC717をしっかりと接続するために、C717を蛇行するかなり長いトラックでVDDをC715にルーティングする必要があったことに注意してください。これは悪いですか? VREF +とVDDAのデカップリングキャップのグランド側と同様に、VREF-とVSSAは直接グローバルグランドに接続されます。これは前の質問でOlinが言ったことと一致するので、今は大丈夫だと思いますか これは、DACからの出力が適度にクリーンになる可能性があるように見えますか?約12ビットの効果的なS / N比を期待しています。uC DACは12ビットで、プロトタイプ用の外部は16ビットです(ピン配置互換の12ビットバージョンがあるため、いつでも後で切り替えることができます)。 私はプロのEEではないので、他のコメントや提案も大歓迎です。ここでも愚かな間違いをしている可能性があります:) 更新: こちらの提案に従って、最新バージョンを収集します。 アルマンダスの提案による最上層の変更: C715とC717のスワップ順序 上部電源プレーンのクリアランスを6ミルから9ミルに増やします(これより大きくすると、プレーンはピンを流れず、たとえばC712アースが切断されたままになります)。 トップv2

1
デカップリングコンデンサに関するSTM32データシートの理解
STがSTM32F030CCのキャップをデカップリングするために推奨するものを理解しようとしています。 データシートの図は、Vdd / Vssペアの「2x100 nF」キャップを示しています。これは、Vdd / Vssペアごとに2つの並列100nFキャップを意味しますか?または、必要な100nFキャップの総数を参照していますか?つまり、Vdd / Vssのペアが2つある場合、Vdd / Vssのペアごとに1100nFのキャップで、合計2100nFのキャップですか? STM32F030データシート

5
電力供給されていないMCUへのUARTピン?
バッテリーから電力供給されるMCUを備えたUSB-UART ICを使用しています。 USB-UART ICはバッテリーではなくUSBコネクタから電源供給されるため、スイッチがオン/オフになるたびにコンソールを開く必要はありません。 この回路のシミュレーション – CircuitLabを使用して作成された回路図 編集:私はそれを図に描画しませんでしたが、ICには内部3.3Vレギュレータがあり、スイッチがオンのとき、すべてのVDDは3.3Vレベルにあります。 今、USBが接続されていて、スイッチがまだオフになっているのが心配です。 MCUドキュメントには、すべての入力ピンの最大定格はVDD + 0.3であり、MCUに電力が供給されていない場合は0.3 Vであると記載されています。 USB-UART側のTX / RXペアがハイになると、MCU側のピンが破壊されますか? その場合、TX / RXペア間に何が必要ですか?

8
マイクロコントローラーなしでデータを保存しますか?
EEPROM、SDCARDなど、どこにでも(マイクロコントローラなしで)電圧データを直接保存する方法はありますか? たとえば、0Vから5Vのアナログ出力を提供するMPX圧力センサーを使用しています。マイクロコントローラーで電圧を圧力に変換して保存する(時間、お金、スペースなどがかかります)代わりに、まずアナログデータを保存してから、電圧を圧力に変換するためにこれらのデータをコンピューターに取り込みます。


3
VssピンよりもVdd
現在、最初のマイクロコントローラーハードウェア設計に取り組んでいます。私は大学でマイクロコントローラのクラスを持っていましたが、それは物事のソフトウェア側に焦点を合わせ、事前に作成された開発ボード(Freescale 68HC12用)を使用しました。 かなり基本的で、おそらく明白であるように思えるので、私は質問するのをhaveしますが、同時に、データシートまたはオンラインフォーラムを検索しているときに明確な答えを見つけることができませんでした。 私はSTM32F7シリーズチップを決定しましたが、基本的な電源とグランドの接続を計画しているときにこのクエリを実行しています。144-LQFPパッケージに合計12 Vddピン(9xVdd + 1xVdda + 1xVddusb + 1xVddsdmmc)がありますが、10 Vssピンしかありません。簡単に言うと、このプロジェクトではMicrochip社のdsPIC33Fを簡単に検討しましたが、同様の不均衡(7 Vddピンと6 Vssピン)に気付きました。 ハードウェア設計の入門書を読んでいますが、高速設計では、Vdd / Vssペアごとにデバイスの近くに配置されたデカップリングキャップの重要性が常に強調されています。明らかなVssペアリングを持たないVddピンに対してはどうすればよいのでしょうか。私のPCBには確かにグランドプレーンレイヤーが組み込まれているので、ペアになっていないVddピンをプレーンに直接デカップリングできますが、Vdd / Vssピンペアリングが重要であるという感覚が常に得られました。 明らかな何かが欠けていますか? 以下に、Vdd / Vssペアと単一のVddピンの両方をデカップリングするための現在の戦略を示す写真をいくつか掲載しました。どちらの方法にも明らかな問題がある場合はお知らせください。

4
STM32 MCUから高速パフォーマンスを取得する
私はSTM32F303VC ディスカバリーキットを使用していますが、そのパフォーマンスに少し困惑しています。システムに慣れるために、このMCUのビットバンギング速度をテストするための非常に単純なプログラムを作成しました。コードは次のように分類できます。 HSIクロック(8 MHz)がオンになっています。 PLLは16のプリスケーラーで開始され、HSI / 2 * 16 = 64 MHzを達成します。 PLLはSYSCLKとして指定されています。 SYSCLKはMCOピン(PA8)で監視され、ピンの1つ(PE10)は無限ループで常にトグルされます。 このプログラムのソースコードを以下に示します。 #include "stm32f3xx.h" int main(void) { // Initialize the HSI: RCC->CR |= RCC_CR_HSION; while(!(RCC->CR&RCC_CR_HSIRDY)); // Initialize the LSI: // RCC->CSR |= RCC_CSR_LSION; // while(!(RCC->CSR & RCC_CSR_LSIRDY)); // PLL configuration: RCC->CFGR &= ~RCC_CFGR_PLLSRC; // HSI / 2 …

5
内部プルアップ/ダウン抵抗を使用する際の考慮事項
STM32マイクロコントローラーを使用しています。これらのマイクロコントローラーには、入力ピンをプルアップまたはプルダウンとして設定するオプションがあります。 以前は必要に応じて外部のプルアップまたはプルダウン抵抗を使用していましたが、今では外部コンポーネントを廃止してマイクロコントローラー自体のプルダウン機能を使用できるかどうか疑問に思っています。 それは良いことでしょうか? 特別な予防措置を講じる必要がある、またはこの機能をまったく使用しない使用事例がありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.