お世話になっております。
プログラミング初心者ですが、質問させていただきます。
FITModulesを使用して、USBのデバイスディスクリプタ(iSerialNumber)を取得したいと思っております。
R_USB_Openを使ってUSBモジュール起動まではできのですが、、、
プログラミング、USB共に初心者レベルなため、その先どのようにしたら良いかわからない状態です。
質問の内容がざっくりしすぎているとは思いますが、
分かる方がいらっしゃいましたらご教授いただきたいと思います。
よろしくお願い致します。
ZXRRさん、こんにちは。NoMaYと申します。うまく回答出来ているか気がかりですが、以下の情報で足りますでしょうか?例えば、サンプルプログラムであるr01an2238では以下のようにiSerialNumberが記述されています。ですので、このサンプルプログラムから派生させたプログラムの場合はg_cdc_string_descriptor6を読めば良い、ということになる筈です。demo_src\r_usb_pcdc_descriptor.c
/* Standard Device Descriptor */uint8_t g_apl_device[USB_PCDC_DD_LEN + ( USB_PCDC_DD_LEN % 2)] ={ USB_PCDC_DD_LEN, /* 0:bLength */ USB_DT_DEVICE, /* 1:bDescriptorType */ (USB_BCDNUM & (uint8_t) 0xffu), /* 2:bcdUSB_lo */ ((uint8_t) (USB_BCDNUM >> 8) & (uint8_t) 0xffu), /* 3:bcdUSB_hi */ USB_IFCLS_CDCC, /* 4:bDeviceClass */ 0, /* 5:bDeviceSubClass */ 0, /* 6:bDeviceProtocol */ (uint8_t) USB_DCPMAXP, /* 7:bMAXPacketSize(for DCP) */ (USB_VENDORID & (uint8_t) 0xffu), /* 8:idVendor_lo */ ((uint8_t) (USB_VENDORID >> 8) & (uint8_t) 0xffu), /* 9:idVendor_hi */ ((uint16_t) USB_PRODUCTID & (uint8_t) 0xffu), /* 10:idProduct_lo */ ((uint8_t) (USB_PRODUCTID >> 8) & (uint8_t) 0xffu), /* 11:idProduct_hi */ (USB_RELEASE & (uint8_t) 0xffu), /* 12:bcdDevice_lo */ ((uint8_t) (USB_RELEASE >> 8) & (uint8_t) 0xffu), /* 13:bcdDevice_hi */ 1, /* 14:iManufacturer */ 2, /* 15:iProduct */ 6, /* 16:iSerialNumber */ USB_CONFIGNUM /* 17:bNumConfigurations */};
/* iSerialNumber */uint8_t g_cdc_string_descriptor6[STRING_DESCRIPTOR6_LEN + ( STRING_DESCRIPTOR6_LEN % 2)] ={ STRING_DESCRIPTOR6_LEN, /* 0:bLength */ USB_DT_STRING, /* 1:bDescriptorType */ '0', 0x00, /* 2:wLANGID[0] */ '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '0', 0x00, '1', 0x00, };
ZXRRさん、こんにちは。NoMaYです。ちなみに、ホスト側から取得することも出来ます。(値が定義されている場所はペリフェラル側ですが。) ただ、そのやり方は、ホスト側がパソコンであればOSのAPIで取得することになりますし、ホスト側がマイコンであればマイコンのUSBライブラリの流儀によります(APIで取得するのかも知れませんし変数を読んで取得するのかも知れませんし)。それで、正直に言うと、FITModuleでのUSBホストは使用経験がなくて、つい多少なりとも使用経験のあるUSBペリフェラルだと思い込んでリプライしてしまったのですが、ひょっとしてFITModuleでのUSBホストの話でしたか?
ZXRRさんほやです。
ちなみに、FITのUSBモジュールの動作がうまく行かない時に「何がいけないのか」を教えてくれるツールがあるのですが、知ってました?
[QE for USB] https://www.renesas.com/qe-usb
e2 studio用なんですけどね...