USB通信
USB設定:
STM32F103VETを使用
STM32F103VETは、Full Speedしか対応していない。
ConnectivityのDevice(FS)をチェック
Parameter Settings
table:Parameter Settings
名前 設定内容 意味
Basic Parameters
Speed Full Speed 12MBit/s
Power Parameters
Low Power Disabled/Enabled
Link Power Management Disabled/Enabled
Battery Charging Disabled/Enabled
Speed (スピード):
Full Speed 12MBit/s: このオプションは、USBデバイスがフルスピードモードで動作することを指定します。フルスピードはUSB 2.0の速度で、データ転送速度が12Mbps(メガビット/秒)です。
Power Parameters (電力パラメータ):
Low Power (低電力):
Disabled (無効): USBデバイスは低電力モードで動作しません。通常の動作モードで電力を消費します。
Enabled (有効): USBデバイスが低電力モードに入ることが許可され、省電力モードで動作します。これはバッテリ駆動のデバイスに適しています。
Link Power Management (リンク電力管理):
Disabled (無効): リンクレベルでの電力管理が無効です。デバイスは通常の電力状態を維持します。
Enabled (有効): リンクレベルでの電力管理が有効です。リンクがアイドル状態の場合、デバイスは省電力モードに入ることがあります。省電力モードでは、リンクが再度アクティブになるまで待機します。
Battery Charging (バッテリー充電):
Disabled (無効): バッテリーの充電機能が無効です。USBデバイスはバッテリーを充電しないようになります。
Enabled (有効): バッテリー充電機能が有効です。USBデバイスはバッテリーの充電をサポートします。この機能は、バッテリ駆動のデバイスに便利です。
table:FS
USB high priority or CAN TX interrupts
USB low priority or CAN RX0 interrupts
table:Middleware
Class For FS IP
Disable USB無効(使用しない場合に選択)
Audio Device Class オーディオデバイス(スピーカーやマイクなど)を模倣またはエミュレートするためのクラス。
Communication Device Class (Virtual Port Com) 仮想COMポートを提供し、シリアル通信を行うためのクラス。仮想的なシリアルポートを作成する。
Download Firmware Update Class(DFU) ファームウェアのアップデートや書き換えを行うためのクラス。デバイスのファームウェアを更新できる。
Human Interface Device Class (HID) ユーザーインターフェースデバイス(キーボード、マウス、ゲームコントローラなど)をエミュレートするためのクラス。
Custom Human Interface Device Class カスタムのユーザーインターフェースデバイスをエミュレートするためのクラス。
Mass Storage Class Mass Storage Class(USBメモリーなど)を使用.フラッシュドライブやハードディスクなどのストレージデバイスを模倣するためのクラス。
FS (Full-Speed): USB 2.0規格における通信速度の一つで、最大で480 Mbps(メガビット/秒)のデータ転送が可能です。FSモードは、多くのUSBデバイスで一般的に使用されます。この速度は、一般的なオフィス用途や一般的なデバイス(例: キーボード、マウス、プリンターなど)に適しています。
HS (High-Speed): USB 2.0規格における通信速度の一つで、最大で12 Mbpsのデータ転送が可能です。HSモードは、FSモードよりも高速で、一部のデバイスやアプリケーションにおいて必要な高速データ転送をサポートします。通常、ビデオカメラや一部のストレージデバイスなど、データ転送がより速い速度を必要とする場合に使用されます。
Intellectual Property(IP)知的財産
product ID:多分そのままでよさそう。
USBマスストレージクラスは永続的にデータを保存できる記憶装置を扱うためのクラス
USBハードディスク、USBメモリ、メモリーカード(USBメモリーカードリーダー経由)などを接続することができる
デジタルカメラやスマートフォン、タブレット端末などの機器も、コンピュータとUSBケーブルで繋いだ際の挙動として、挿入されたメモリーカードや本体内蔵フラッシュメモリなどをUSBマスストレージクラスとして読み書きできる
Custom Human Interface Device Classの場合の設定
table:para
名前 設定 内容
CUSTOM_HID_FS_BINTERVAL 1 マスタからのポーリング希望間隔。単位はmsです。
USBD_CUSTOM_HID_REPORT_DESC_SIZE 32 レポートディスクリプタのサイズ
USBD_CUSTOMHID_OUTREPORT_BUF_SIZE 64 送受信するデータサイズです。64バイトまでの任意のサイズです。
ーーー
STM32F103VET6を使用する場合、
内部クロックだと使用できないため、外部クロックを有効にする必要がある。
USB host library:
伯東:
参考:
秋月USB
設定参考
ハード参考
USBのCDCクラス
USBのCDC (Communication Device Class) は、USBデバイスのクラスの1つであり、データ通信を行うデバイスを定義するための規格です。CDCは、コンピュータと通信デバイス(通常はシリアル通信デバイス)との間で、シンプルな双方向データ転送を可能にするために使用されます。
CDCは、シリアル通信プロトコル(UART、RS-232など)を模倣し、デバイスとホストコンピュータ間でのデータの送受信を簡単に行うことができるようにします。例えば、モデム、シリアル通信ポート、仮想COMポートなどがCDCを使用して実装されることがあります。
CDCを使用することで、デバイスがドライバソフトウェアなしで標準的なコンピュータと通信できるため、プラグアンドプレイの機能が提供されます。これにより、ユーザーが追加のドライバインストールなしでデバイスを接続し、通信することができます。
CDCクラスは、ホストコンピュータと通信デバイス間の基本的なデータ転送を処理するためのAPIや仕様を提供します。CDCデバイスは、通常はデバイスの仕様書に記載されている通り、特定のコマンドや応答に従ってコミュニケーションを行います。
CDCは、組み込みシステム、モバイルデバイス、医療機器、モデム、GPSレシーバーなど、さまざまなアプリケーションで使用されています。デバイスがCDCクラスを使用する場合、適切な仕様書とドライバソフトウェアの実装が必要となります。
仮想COMポート
仮想COM(仮想コミュニケーションポート)は、コンピュータ内部でソフトウェア的にエミュレートされるシリアル通信ポートです。通常の物理的なシリアルポート(RS-232ポートなど)と同様の機能を提供し、アプリケーションがこれを使用してシリアル通信データを送受信することができます。仮想COMポートは、実際のハードウェアがなくても、シリアル通信のテスト、開発、シミュレーションを行う際に便利です。
仮想COMポートは、通常、以下のようなシナリオで使用されます:
デバイスエミュレーション: 特定のハードウェアデバイス(例えば、モデム、GPSレシーバー、センサーなど)が必要なアプリケーションがある場合、仮想COMポートを使用してそのデバイスの挙動をエミュレートすることができます。
ドライバ開発とテスト: ハードウェアを持っていない状況で、シリアル通信ドライバを開発およびテストする際に、仮想COMポートを使用して実際の通信をシミュレートすることができます。
デバッグとトラブルシューティング: 特定のアプリケーションやデバイスのシリアル通信に問題が発生した場合、仮想COMポートを使用して通信を監視し、問題を特定するのに役立ちます。
データロギング: 通信データを記録する必要がある場合、仮想COMポートを使用してデータをキャプチャし、後で分析することができます。
仮想COMポートは、ソフトウェアツールやライブラリを使用して実現されることが一般的です。Windowsオペレーティングシステムでは、COMポートエミュレーションを行うためのソフトウェアが提供されています。このようなソフトウェアを使用することで、アプリケーションは物理的なシリアルポートと同様に仮想COMポートと通信することができます。
USBのクラス
USBのクラスは、USBデバイスがどのような機能を提供するかを識別し、適切なドライバやプロトコルを使用して通信するために使用されるカテゴリです。USB仕様では、さまざまなデバイスタイプに対するクラスが定義されています。以下にいくつかの一般的なUSBクラスをいくつか挙げてみましょう:
HID (Human Interface Device) クラス: キーボード、マウス、ジョイスティック、リモコンなどの人間とのインタラクションを提供するデバイスのためのクラスです。
Mass Storage クラス: ハードディスク、USBフラッシュドライブ、CD/DVDドライブなどのストレージデバイスを表すクラスです。
Audio クラス: マイク、スピーカー、ヘッドセットなどのオーディオデバイスを表すクラスです。
Communication Device Class (CDC) クラス: シリアルポート、モデム、仮想COMポートなどの通信デバイスを表すクラスです。先ほど説明した通り、CDCクラスはシリアル通信を扱います。
Printer クラス: プリンターやスキャナーなどの印刷およびイメージングデバイスを表すクラスです。
Video クラス: ウェブカメラ、ビデオキャプチャデバイスなどのビデオデバイスを表すクラスです。
Hub クラス: USBハブデバイスを表すクラスで、他のUSBデバイスを接続するための増設ポートを提供します。
Vendor-Specific クラス: 特定のベンダーが独自の機能やプロトコルを実装したデバイスを表すクラスです。これにより、独自のカスタムデバイスを作成することができます。
これは一部の一般的なUSBクラスの例ですが、実際にはさらに多くのクラスが存在します。デバイスが特定のクラスに属することで、適切なドライバやプロトコルが使用され、デバイスが正しく動作するようになります。
STM32F401との接続
table:接続
キット側ピン番号 mbed側ピン番号 機能
1 5V VBAS
2 PA_11 D-
3 PA_12 D+
4 none NC
5 GND GND
D+側は、10kΩ抵抗で、プルアップする。
code:c
uint8_t sendData2; // 書き込むデータを格納するバッファ HAL_I2C_Mem_Write(&hi2c1, slaveAddress<<1, memAddress, I2C_MEMADD_SIZE_8BIT, sendData, sizeof(sendData), HAL_MAX_DELAY);
uint8_t receiveData2; // 読み取ったデータを格納するバッファ HAL_I2C_Mem_Read(&hi2c1, (slaveAddress<<1)|1, memAddress, I2C_MEMADD_SIZE_8BIT, receiveData, sizeof(receiveData), HAL_MAX_DELAY);
table:Audio
USBD_MAX_NUM_INtERFACES
USBD_MAX_NUM_CONFIGURATION
USBD_MAX_STR_DESC_SIZ
USBD_SELF_POWERED
USBD_DEBUG_LEVEL
USBD_AUDIO_FREQ
について、表形式で教えてください。
table:Audio
USBD_MAX_NUM_INTERFACES USBデバイスがサポートする最大インターフェースの数。
USBD_MAX_NUM_CONFIGURATION USBデバイスがサポートする最大設定(コンフィギュレーション)の数。
USBD_MAX_STR_DESC_SIZ USBデバイスで使用される文字列記述子(String Descriptor)の最大サイズ。
USBD_SELF_POWERED USBデバイスが自己電力供給(セルフパワード)モードで動作する場合に設定されるフラグ。
USBD_DEBUG_LEVEL USBデバッグメッセージの表示レベルを設定するためのパラメータ。デバッグメッセージはUSB通信に関する情報を提供し、デバッグ目的で使用される。
USBD_AUDIO_FREQ USBオーディオデバイスでサポートされるオーディオサンプリング周波数(Hz単位)。オーディオデータ転送に関連するパラメータ。
table:VCD
USB CDC Rx Buffer Size USB CDCデバイスが受信(データを受け取る)用に確保するバッファのサイズ。 受信データの最大予想サイズに基づく
USB CDC Tx Buffer Size USB CDCデバイスが送信(データを送信する)用に確保するバッファのサイズ。 送信データの最大予想サイズに基づく
データの最大予想サイズ: 受信および送信データの最大サイズを知ることが重要です。
これに基づいて、バッファサイズを設定します。データがこのサイズを超える場合、バッファオーバーフローが発生する可能性があります。
データ転送レート: データが高い速度で送信される場合、バッファのサイズを増やすことで、一時的なデータの貯蔵を確保します。これにより、データの一時的な遅延やデータの損失を防ぐことができます。
データ転送の頻度: データの送信や受信の頻度に応じて、バッファサイズを設定します。頻繁なデータ転送がある場合、大きなバッファが必要かもしれません。
利用可能なメモリ: デバイスのメモリ制約に留意する必要があります。バッファサイズを選択する際、デバイスの利用可能なメモリ容量に合わせて調整することが重要です。
一般的には、適切なバッファサイズを決定するためにデータの特性と要件をよく理解し、バッファオーバーフローやデータの損失を避けることが目標です。過大なバッファサイズを設定することはリソースの無駄遣いにつながる可能性があるため、データの特性に基づいて最適なバッファサイズを見つけることが重要です。
table:DFU
USBD_DFU_MAX_ITF_NUM
USBD_DFU_XFER_SIZE
USBD_DFU_APP_DEFAULT_ADD
USBD_DFU_MEDIA Interface
について、表形式で教えてください。
USBD_DFU_MAX_ITF_NUM
USB Device Firmware Upgrade(DFU)インターフェースの最大数。
dDFUは、ファームウェアのアップデートや書き換えを可能にするためのUSBプロトコルです。
この設定は、プロジェクトのDFUインターフェース数に応じて調整します。通常、1つのDFUインターフェースが十分ですが、必要に応じて増減させることができます。
USBD_DFU_XFER_SIZE
DFUデータ転送のバッファーサイズを指定します。これはDFUデータの転送に使用されるバッファーのサイズで、適切な転送速度や性能を確保するために調整する必要があります。
USBD_DFU_APP_DEFAULT_ADD
DFUアプリケーションのデフォルトのアドレスを指定します。DFUアップデートの際に、新しいファームウェアが配置されるアドレスを指定します。これはターゲットデバイスのメモリマップに依存します。
USBD_DFU_MEDIA Interface
DFUメディアインターフェースは、DFUプロトコルを介してファームウェアのアップデートを実行するためのインターフェースを指定します。これは通常、USB経由でDFUアップデートをサポートするために使用されます。
HID_FS_BINTERVAL
HID_FS_BINTERVAL(HID Full-Speed BInterval)は、USB HID(Human Interface Device)デバイスの通信速度やタイミングに関するパラメータの一部です。USB HIDデバイスは、キーボード、マウス、ジョイスティックなどの入力デバイスに使用され、ユーザーとコンピューター間のデータのやり取りを行います。
HID_FS_BINTERVALは、
USB HIDデバイスがホストコンピューターにデータを送信する頻度を示すパラメータです。具体的には、HIDデバイスがデータを送信する間隔を指定します。この値はミリ秒単位で表されます。
USB 2.0 Full-Speed(FS)では、データの送信間隔がBIntervalという値によって制御されます。この値はエンドポイント(通信チャネル)ごとに設定され、HIDデバイスの通信特性に合わせて調整されます。通常、キーボードやマウスなどのHIDデバイスでは、比較的短い間隔でデータを送信することが一般的です。
HID_FS_BINTERVALの値は、HIDデバイスの設計に依存し、特定のデバイスに合わせて調整される必要があります。この値を設定することで、デバイスが正確かつ効率的にデータを送信し、ユーザーエクスペリエンスを向上させることができます。
したがって、HID_FS_BINTERVALの具体的な値や設定方法は、開発しているHIDデバイスや使用しているUSBコントローラーに依存します。デバイスの仕様やUSBドライバーの要件に従って適切な値を設定する必要があります。
CUSTOM_HID_FS_BINTERVAL
カスタムHIDエンドポイントの転送周期を設定するための定数。単位はフレームです。
USBD_CUSTOM_HID_REPORT_DESC_SIZE
カスタムHIDデバイスのレポート記述子サイズをバイト単位で指定する定数。
USBD_CUSTOMHID_OUTREPORT_BUF_SIZE
カスタムHIDデバイスのOUTレポートのバッファサイズをバイト単位で指定する定数。
code:c
if (__HAL_TIM_GET_FLAG(&htim, TIM_FLAG) != RESET) の条件文は、htimというタイマーハンドラーで指定されたタイマーが、TIM_FLAG で指定された特定のフラグがセットされている場合に真(true)となります。
ここでの htim は特定のタイマーインスタンスを指し示すタイマーハンドラーであり、TIM_FLAG は確認したい特定のタイマーフラグを指します。この条件文は、指定したタイマーの特定のフラグがセットされている場合に処理を実行するために使用されます。
したがって、htim7 が有効なタイマーインスタンスで、かつ TIM_FLAG で指定されたフラグがセットされている場合に条件が真になります。具体的にどのフラグを確認しているかは TIM_FLAG の値に依存します。このコードスニペットでは、特定のタイマーとそのフラグに対して正確な値を指定する必要があります。
MSC_MEDIA_PACKET(Media I/O buffe)
MSC_MEDIA_PACKET" という用語は、STM32マイクロコントローラで使用されるとは限らないため、詳細な文脈が提供されていないと正確な回答が難しいです。STM32の場合、"MSC" は "Mass Storage Class" を指し、USB Mass Storage デバイスの実装に関連している可能性があります。"Media Packet" はデータの転送に関連しているかもしれません。
以下は、USB Mass Storage デバイスに関連する一般的な情報です:
USB Mass Storage クラス(MSC)は、USBデバイスがファイルシステムへのアクセスを提供するための標準規格です。これは、フラッシュドライブ、外付けハードドライブ、SDカードなどのデータストレージデバイスとして動作するUSBデバイスに関連しています。
"Media Packet" とは、データストレージデバイス内で扱われるデータの単位を指すことがあります。USB MSCデバイスは、データを "パケット" として送受信し、これらのパケットはデータの読み書きを行うための基本的な単位として機能します。
ただし、具体的な用語や文脈に関する詳細な情報が提供されていないため、より具体的な回答を提供するには、関連するSTM32デバイスのドキュメンテーションやコード内での使用例を調べる必要があるかもしれません。特定のコンテキストでこの用語がどのように使用されているかについての追加の情報を提供していただければ、より具体的なアシストが可能です。
Share
Save
STM32F103のUSB通信において、MSC_MEDIA_PACKETはUSB Mass Storageクラス(MSC)の設定に関連するパラメータではないかと思われます。しかし、私の知識のカットオフ日(2021年9月)までの情報には、具体的なMSC_MEDIA_PACKETという設定についての情報は含まれていません。このような設定が追加された場合、それに関する情報はSTMicroelectronicsの公式ドキュメンテーションやリファレンスマニュアルに記載されている可能性があります。
USB Mass Storageクラス(MSC)は、STM32マイクロコントローラでUSBメモリデバイス(USBフラッシュドライブなど)をエミュレートするためのクラスです。設定やパラメータに関する詳細情報を得るためには、STMicroelectronicsの公式ウェブサイトで提供されているドキュメンテーションやマニュアルを確認し、特に使用しているSTM32マイクロコントローラのデータシートやリファレンスマニュアルを調査することをお勧めします。また、STMicroelectronicsのコミュニティフォーラムやサポートサイトで質問をすることも役立つかもしれません。
MSC_MEDIA_PACKETが具体的な設定項目である場合、それに関する詳細情報を提供いただければ、より具体的な回答を提供できるかもしれません。