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

STM32は、STMicroelectronicsによる3番目のARMファミリです。ARM9Eコアをベースにした以前のSTR9ファミリ、およびARM7TDMIコアをベースにしたSTR7ファミリに続きます。STM32は、ARM Cortex-Mファミリーのコアに基づいています。

2
RS232経由でメッセージを正常に送信できないのはなぜですか?
先週、私はSTM32F407からUARTメッセージを送信し、シロアリを使用したugreen RS232-USBケーブルを介してラップトップでそれを読み取ることに取り組んできました。 私はSTMCubeを使用してコードを生成し、「stm32f4xx_hal_uart.c」ファイルの上部にある関連する説明を読んで(そして、たくさんのビデオを見てオンラインで読んで)、コードを追加しました。 送信されたメッセージをオシロスコープで確認したところ、ASCII表現と一致しています。 たとえば、0101 0001である「Q」を送信し、0101 0111である「W」を受信します。スコープの読み取り値は、 オシロスコープに表示されるのと同じ信号のシロアリ出力。 私は、ボーレート/パリティ/ HWcontrolがシロアリと私のコードで一致していることを確認しました。 正しい文字を受け取るために、ボーレートを下げたり上げたりしてみました。 間違った文字が表示される原因となるパターンを見つけるために、さまざまな文字セットを試しました。 さらに、PuttyやTeratermなどの別の端末を試しました。
9 stm32  uart  rs232 

2
STM32F407 + LAN8720A + lwIP + FreeRTOS =受信されたイーサネットフレームなし
STM32F407およびLAN8720AイーサネットPHYを使用するPCBを立ち上げようとしています。フレームの送信に問題はありませんが、イーサネットフレームを受信できません。 ハードウェアのセットアップ 私はSTM32F4に25 MHz水晶を搭載しており、25 MHzクロック出力ピンをREF_CLK_OUTモードのLAN8720Aに駆動し、50 MHzクロックをRMIIインターフェイスの一部としてSTM32F4に駆動します。 ジャック/磁気は一般的な部品です。これがデータシートです: ソフトウェア 私は最新アップデートのSTM32CubeMXを使用して、FreeRTOS、lwIP、およびETH周辺機器ドライバーを含むSTM32プロジェクトのSystem Workbenchを生成しています。生成されたコードには実際には触れていません。そのため、lwIPスタックはFreeRTOSスタック内で初期化されます。 実験 ボードのlwIPが10.0.0.2静的IP用に構成され、コンピューターのUSB-to-Ethernetドングルが10.0.0.1静的IP用に構成されているので、2つのデバイスをイーサネットケーブルで直接接続し、ボードが接続しようとします。コンピューターのポート80でサービスに。Wiresharkを使用してボードとコンピューター間のやり取りをキャプチャします(コンピューターで実行され、USB-to-Ethernetコンバーターにバインドされています)。 フレームを受信できないという問題があるため、このARPの問題を 回避することはできません。ご覧のように、Stmicroe(ボード)はARPパケットを送信できます—私のコンピューターで聞こえます—私のコンピューターからの応答は聞こえないようです。 、それはARPパケットを爆破し続けるので。 どちらのデバイスも255.255.255.0マスクで構成されており、両方とも10.0.0.1(コンピューター)のゲートウェイアドレスで構成されています。ARPテーブルがめちゃくちゃになり、コンピューターがARPパケットを無視することを聞いたことがありますが、ボードが最初に作成した要求に応じて、ボードが自分のコンピューターによってアドレス指定されたARPパケットを無視することは想像できません。 そこで、lwIPのethernetif.cファイルを調べてHAL_ETH_GetReceivedFrame_IT(&heth)、エラーが返されていることに気づきました。この関数は、(heth->RxDesc->Status & ETH_DMARXDESC_OWN)1ではなく== 0であるためエラーを返します。これは、DMAバッファーが現在MAC周辺機器用に準備されており、まだ何も受信していないことを意味すると解釈します。 さらに、HAL_ETH_IRQHandlerが呼び出されないことを確認しました。 PHYの問題? この時点で、自分のPHY自体に問題があるのではないかと思いました。 さらに調査するため、Saleae Logic Pro 16を関連するすべての信号に接続しましたが、TX0 / TX1とRX0 / RX1の両方の回線に大量のトラフィックがあることに気付きました。次に、25 MHzの入力クロックを使用した一部のRXトラフィックのキャプチャを示します。 RX_ERRは、50 MHzのクロック出力(明らかにSaleaeのようなデバイスで明らかに困難なもの)をキャプチャしようとしない限り、常に低いです。 —ピンは機能しているように見えます)。 次のステップ タスクでが呼び出されたHAL_NVIC_EnableIRQ(ETH_IRQn);後、ETH割り込みを手動で有効にしてみましたtcpip_init()がMX_LWIP_Init()、問題が解決しないようです。イーサネット割り込みルーチンが呼び出されることすら想定されているかどうかは、完全にはわかりません。これは、まったく新しい設計を実現する上で困難なことです。システムの適切な動作を判断するのに苦労しているため、セットアップの違いを判断できます。 以前にSTM32 / STM32CubeMX / FreeRTOSなどを使用したことはありますが、STM32のイーサネットペリフェラルを使用したことはありません。これに関する私の唯一の経験は、常に組み込みで動作するように見えるカスタムの組み込みLinuxシステムに関するものだけです。これは私にとって新しい領域です! どこかに愚かなチェックボックスか、Ethernet_EnableReceive()呼び出しを忘れた魔法の関数があると確信していますが、それを明示的に有効にする必要があることを示唆するドキュメントを実際に見つけることはできません。インターネット上に表示されている投稿はすべて無関係です。問題。 誰かが何かアイデアがあれば、私はいくつかの助けが欲しいです! 補遺:FreeRTOSを取り除く 物事を排除するために、FreeRTOSプロジェクトコンポーネントを削除し、ベアメタルプロジェクトに戻りました。メインループでは、を呼び出しますMX_LWIP_Process()。この方法では、割り込みの必要性はなくなりますが、問題は解決されません。それでもフレームを受信できません。これにより、STM32CubeMXによって生成されたETH HALコードに何かがあると思います。 解決 誰かが将来この質問に出くわした場合に備えて、問題はRXD0ピンとRXD1ピンが反転していることが判明しました。ロジックアナライザーでトラフィックを確認できたのはこのためですが、MCUでデコードされませんでした。 誰かが指摘したように、私が使用した磁気は非対称であり、auto-MDI-Xには使用しないでください。何の問題もありませんでした。私は2つのことの1つが起こっていると予想します:-磁気は実際には他の方向では機能しませんが、私が持っているすべてがauto-MDI-Xを使用しているため、私のボードは本質的には機能する構成で固定され、他のデバイスはオンですケーブルはその信号を一致するように向けます。-磁気は、イーサネットの実行が短い場合に適切なシグナルインテグリティを提供しますが、長期間の分析では、より長い実行でのパケットドロップまたは問題の発生率が高くなります。 …

2
組み込みプログラミングをKeilからLinuxに移行する
現在、STM32ディスカバリーボード用の開発にKeilを使用しています。私のプロジェクトはほぼ完成しているので、Linuxベースのビルド環境に移行したいと思います。私は事前に構成されたフラッシュツールとWindows用のSTLinkドライバーを使用してボードをフラッシュし、qeilを使用してLinuxファイルでフラッシュするように管理したbinファイルをエクスポートしました。ここまでは順調ですね。 今、私はプロジェクト全体を構築するプロセスを動かすことにこだわっています。具体的には: 「startup_stm32l1xx_md.s」スタートアップファイルなどを考慮しながら、.uvprojをメイクファイルに移植するにはどうすればよいですか?
9 stm32  linux  gcc  keil 

1
これらのマイクロコントローラーのピン入出力モードとはどういう意味ですか?
stm32f103ret6を購入しました。リファレンスマニュアルを見たとき、いくつかのI / Oモードがあることがわかりました。 入力用:フローティング、プルアップ、プルダウン 出力用:アナログ、オープンドレイン、プッシュプル 私はすでにトライステートとプルアップを備えたAVR MCUで作業しました。プルアップとプルダウンは理解できますが、フローティング、アナログ、オープンドレイン、プッシュプルのモードは理解できません。これらのモードの意味と、いつ使用するのですか?

4
STM32 ADCノイズ2
STM32F2で2つ目のデザインをテストしたところ、今度はSTM32F207ZFT6になりました。ADCの動作は、最初のアプリケーションと同じです-ADCの強いノイズ。 信号が接続されていない電流入力のノイズ: 注:上記の信号グラフでは、垂直軸はボルトではなくADCビット単位です!; 凡例„ [V]“と混同しないでください。このテストでは、変更されたプログラムを使用して大まかなADCデータを確認しました。 次に示すように、CPUのアナログピンがGNDに短絡した場合でも、同じノイズが発生します。 私の意見では、サンプリングされた信号には30 LSB以上の永続的なスパイクがありますが、5〜10 LSBを超えることはできません。 別の詳細: 2面PCB、底面には他の接続がありますが、そのほとんどはGND信号で注がれます-デジタルとアナログの両方に共通で、アナロググランドは分離されていません。ボードの消費は最小限で、100 mA未満なので、そのようなノイズが発生することはないと思います。 オペアンプでバッファリングされた基準電圧VREF 3.3V、100nFとタンタル10uFで並列にブロック、VREF / 2と同じ。各プロセッサの電源ピンは100nFのキャップでブロックされています 以前のアプリケーションでは同じ設計概念を使用しましたが、使用したプロセッサはAduC834でした。12ビットADCもあり、信号ノイズは数LSBのみで、問題はありませんでした。主な違いは、AduCの内部電圧リファレンスが使用され、外部リファレンスは使用されなかったことです。 プロセッサのアナロググランドピンをボードの共通GNDから切り離し、追加のワイヤで直接基準電圧VREFグランドに接続するようにテストしましたが、影響はありません。 三相ネットワーク測定装置であり、3つのアナログ電圧チャネルと3つの電流チャネルがあり、切り替え可能なゲインプリアンプを備えています。CPUオシレーター25 MHz、PLLによる内部クロック120 MHz、ADCクロックは30 MHz(技術仕様に準拠)、メインの内部クロック(したがってすべてのセカンダリクロックも)を1/4に遅くするようにテストしましたが、影響はありません。 ADCは、50 Hzのネットワーク周期ごとに128変換のレートで入力信号を定期的にサンプリングします。結果はDMAによって内部RAMに転送されます。RAMからのデータは、絶縁RS485(別のボード上)を介して転送され、プログラムで視覚化されます。変換時間を最大に延長しようとしましたが、効果はありません CPUを除いて、3つのオパム、2つのアナログスイッチ、I2C温度計、および3つのULNスイッチ(テスト中は未使用)、リニアLF33スタビライザー、通常は別のボード上のスイッチャーからの5V DCから電力が供給されますが、テスト中にスイッチャーは切断され、LF33は透明な実験室の5V DC電源から給電されました。プロセッサオシレータ以外はボードで発振できないと確信しています。 オシロスコープで信号を確認しても決定的な結果は得られず、信号が弱すぎる このプロセッサフ​​ァミリのADCパフォーマンスの経験がある人はいますか? 信号強度について:アナログ入力が短絡している場合でも、オシロスコープで5〜10 mV(ピークツーピーク)のノイズが見られます。基板にはんだ付けされた最小接地線長の同軸ケーブルで測定しました。標準プローブでは、おそらく接地が悪いためにノイズが約2倍高くなりました(一般的なEMCノイズ?)。 これは私のボードの画像です: そして、ボードの底: 上記で報告したように、信号が接地されていても、ADC変換されたデータには約30 LSBのノイズが残っています。
9 adc  noise  stm32 

2
VBUSセンシング入力の5V許容値
STM32L476を中心にデバイスを設計しています。私のデバイスは主に電池式ですが、USBポートがあり、これを接続すると、3.3Vレギュレータを介して代替電源として使用し、電池の消耗を制限します。バッテリーがない状態でもユーザーがUSBポートを接続することは可能です。 USBポートが接続されたときに感知できるようにしたいので、PA9をOTF_FS_VBUSとして使用しています。 良い知らせ:PA9ピンは5Vトレラントであるとデータシートは述べています。 悪いニュース:5Vトレラントピンは、電力が供給されている場合にのみ実際に5Vトレラントになるようです。データシート§6.2の表18には、次のように記載されています。 FT_xxxピンの最大入力電圧:min(VDD、VDDA、VDDIO2、VDDUSB、VLCD)+ 4.0V 私の場合、バッテリーがなく、ユーザーがUSBポートを接続している場合、レギュレーターが起動する前に、CPU電源ピンに電力がまったく供給されていない間、PA9の電圧が5Vになる時間があります。 さらに悪いニュース:現在の注入は許可されていません:データシート§6.2、表19は言う: FT_xxxに注入された電流:-5 / + 0(注4を参照) Note 4:正の注入はVIN> VDDIOxによって誘発され、負の注入はVIN <VSSによって誘発されます。IINJ(PIN)を超えてはなりません。 したがって、レギュレータが起動している間は、簡単な抵抗を使用してPA9の過電流を制限することはできないようです。VDDが立ち上がる前にVBUSからPA9に流れる電流量は明らかに禁止されています。 他の人は何をしましたか? 私はSTM32チップの周りの数多くのデザインを見て、それらのVBUS接続を調べました、そして彼らは気にしていないようです。それらはVBUSをPA9に直接接続するか、最終的には抵抗を介して接続しますが、これ以上複雑なものを見たことはありません。しかし、それらは主に開発ボードであるため、堅牢性(それは言葉ですか?)はそれほど重要ではないと思います。そして、それらは通常USBポートを介して電力が供給されておらず、ボードに電力を供給する前にユーザーがUSBポートを接続しないことを確かに想定しています。 私の計画は何ですか? これをUSBポートのVBUSとMCUのPA9ピンの間に配置します。 私は本当にそれをシンプルに保つように努めました。基本的に、VUSB_CPU(PA9ピン)がVCPU + 4V(Vz + Vbe)を超えることはなく、問題がなければ電力を消費しません。 私の主な質問は次のとおりです。私は私の分析で正しいですか?この回路は良い解決策ですか?無関係なことを心配していますか?なぜ他の誰もこの潜在的な問題を気にかけないようですか? 追加の質問:USB OTGを使用する予定です。コネクタとPA9ピンの間に4.7kの抵抗がある場合、それは問題ですか?SRP中にVBUSパルスを使用しなければならなかったと思いますが、この方法は明らかに非推奨です。私のデバイスの役割(デバイス/ホスト)が何であれ、私は良いですか? 最後の1つ:VDDUSB電源ピンによって引き出される最大電流はどれくらいですか?データシートでは、USBペリフェラルについて、AHBクロックドメインの16.4µA / MHz +独立クロックドメインの23.2µA / MHzを指定していますが、どこから描画されているか(VDDまたはVDDUSB)はわかりません。
8 usb  stm32  usb-otg 

4
STM32 USB VCPバグ
私は過去2週間プロジェクトに取り組んでおり、この1つの問題のデバッグにこの1週間かかりました。誰かが助けてくれるかどうか疑問に思って、私はできるだけ明確で明確になるように努めます。 STM32F302K8(Cortex M4)に基づくマイクロコントローラーにUSB仮想通信ポートを実装しようとしています。STM32CubMXを使用して、CDCクラスを実装するUSB​​フルスピードデバイスをセットアップするために必要なコードを生成しました。デバイスがWindows(デバイスマネージャー)とLinuxの両方に表示されます。サンプルコードに基づいて単純なエコー関数を実装できますが、関数USBD_CDC_SetTxBufferを使用してPCにデータを送信しようとすると、ハードフォールトハンドラーが起動します。USBD_CDC_Init()がUSBデバイスの初期化で呼び出されないため、UsbDeviceFS.pClass(USBD_CDC_SetTxBufferで必要)フィールドが初期化されないという事実にこれを絞り込みました。 STフォーラムに記載されているサンプルコードのいくつかのバグ(ヒープサイズの変更、USBD_CDC_TransmitPacketの送信フラグの修正、CDC_DATA_HS_MAX_PACKET_SIZEのサイズの256への変更など)の修正を実装しましたが、同じエラーが発生します。 デバイスのセットアップコードは * USB Device Core handle declaration */ USBD_HandleTypeDef hUsbDeviceFS; /* init function */ void MX_USB_DEVICE_Init(void) { /* Init Device Library,Add Supported Class and Start the library*/ USBD_Init(&hUsbDeviceFS, &FS_Desc, DEVICE_FS); USBD_RegisterClass(&hUsbDeviceFS, &USBD_CDC); USBD_CDC_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_fops_FS); USBD_Start(&hUsbDeviceFS); }
8 usb  stm32 

1
STM32のSPIはプルアップ抵抗がないと機能せず、パフォーマンスも低下します
しばらくの間、STM32F103C8(Blue Pillボード)のSPI1が正しく機能するように努めています。ARMの学習を始めたばかりなので、データを74HC595シフトレジスタにシフトし、それをラッチして1バイトのLEDを点灯させようとしています。データを読み取っていないので、MOSI、SCK、SSのラインしかありません。 最初は何も出力されませんでしたが、オンラインの例を読んで、これらの最初の問題を修正して通信を開始することができました(GPIOAピンを正しく設定し、ソフトウェアSSを設定する必要がありました)。 現在の主な問題は、すべてのライン(MOSI、SCK、SS)にプルアップ抵抗を含めないと、マイクロコントローラーがラインに何も出力しないことです(スコープで確認)。これに加えて、プルアップ抵抗を追加した後、パルスの立ち上がり時間が非常に遅いため、あまりにも高い周波数を使用できません(10kΩのプルアップ抵抗を使用すると、約250 kHz SCKに制限され、スイッチング約330 MHzに約4 MHz)。私はブレッドボードで作業していますが、それでもAVRとより複雑な配線を使用しても、抵抗を追加せずに4 MHz SPIが問題なく動作し、波形はきれいでした。 これは、250 kHzクロックでバイト0b01110010を送信している2つの画像(スコープ画面のひどい状態の場合は申し訳ありません)です。上のトレースはSCKで、下のトレースはMOSIです。最初の画像は10kΩプルアップ抵抗で、2番目の画像は波形をより良くする330Ωプルアップ抵抗です(ただし、それらは必要ありません)。 何が起こっているのかを理解するための助けをいただければ幸いです。 私のコードの関連部分は: #define SS_LOW GPIOA->BSRR |= 1 << 4 + 16; #define SS_HIGH GPIOA->BSRR |= 1 << 4; // SPI GPIO configuration RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; GPIOA->CRL |= 0b0011 << 4 * 4; // Set pin A4 as PP …

4
STM32F303 MCUの割り込みレイテンシ
私は、外部割り込みに応答する必要があるSTM32 MCU(正確にはSTM32303C-EVALボード上)を含むプロジェクトに取り組んでいます。外部割り込みに対する反応をできるだけ速くしたいのですが。STのWebページから標準のペリフェラルライブラリの例を変更しました。現在のプログラムは、PE6の連続する立ち上がりエッジごとにLEDをトグルするだけです。 #include "stm32f30x.h" #include "stm32303c_eval.h" EXTI_InitTypeDef EXTI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; static void EXTI9_5_Config(void); int main(void) { /* Initialize LEDs mounted on STM32303C-EVAL board */ STM_EVAL_LEDInit(LED1); /* Configure PE6 in interrupt mode */ EXTI9_5_Config(); /* Infinite loop */ while (1) { } } // Configure PE6 and PD5 in …

2
STM32のUSART(UART)割り込みフラグをクリアしますか?
STM32F105を使用して、UARTを使用するLinx GPSチップと通信しています。 割り込みを使用しない場合(RXフラグをポーリングするだけの場合)、問題なく動作します。しかし、割り込みを使用しようとすると、予期しない結果が発生します。 たとえば、を使用してRXNE(「RX not empty」)割り込みのみを有効にする場合USART_ITConfig(USARTx, USART_IT_RXNE)、コードはこの1つの特定のイベントのISRにのみベクターする必要があります。ただし、割り込みはオーバーラン状態でもトリガーされます。 フラグをクリアする限り、メソッドはフラグに依存しているようです。オーバーランフラグ(USART_IT_ORE)をクリアするには、ユーザーマニュアルに、最初にUSARTx_SRレジスタを読み取ってからレジスタを読み取るべきと説明USARTx_DRされています。これは機能します。フラグはクリアされます。 USART_ClearITPendingBit()関数もありますが、フラグの小さなサブセットしか受け入れません。 選択的に有効にできる8つの異なる割り込みソースと、10の異なるフラグがあります。 これらのフラグをすべて管理する方法の概要はどこにありますか?

3
STM32F0x1コンパレータ(COMP)とADCを同じピンに同時に接続しますか?
STM32F051マイクロコントローラーのコンパレータペリフェラルを利用するプロジェクトをまとめています。ドキュメントで、コンパレータが機能するために入力ピンをアナログ用に構成する必要があることを読みました。これは、ピンをADC入力として使用していた場合と同じ設定です。 入力として単一のピン(PA1など)を使用して、ウィンドウコンパレーター入力とADC_IN1のADC入力の両方として構成できますか? 考慮すべき追加のノイズなど、この構成に問題点はありますか? データシート(p 19) リファレンスマニュアル(p 295) これが可能であることを示唆する興味深いリファレンス: AN4232 からの抜粋:STM32F3シリーズのアナログコンパレータの概要
8 stm32  stm32f0 

4
ST-LINKはシリアル通信は可能ですか?
ARM Lite 3にはSTM32F4ディスカバリーボードとAtollic TrueStudioを使用しています printfを使用してデバッグデータをPCに渡したいのですが、STLinkでそれを行う方法が見つかりません。可能ですか?これは、デバッグプロセスに不可欠な機能のようです。 編集:シリアルワイヤービューアーを使用する必要がありますが、それでも機能しません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.