Микроконтроллеры

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Микроконтроллеры » Архив » USB CDC для STM32F103


USB CDC для STM32F103

Сообщений 91 страница 98 из 98

91

Действительно, PMA отображается в память контроллера с интервалом через каждые 2 байта..
Т.е. идет 2 байта PMA, потом 2 нулевых байта.. и т.д.
Еще и в доке об этом написано так что хрен поймешь.

92

К проекту True Studio добавил файлы из этого проекта:
alexsam

При компилляции 5 одинаковых ошибок, при развёртывании макроса _USB_STRING_

Код:
_USB_STRING_(wsVendor, L"SaeWave.com")
_USB_STRING_(wsProd, L"RemoteSwitch HUB")
_USB_STRING_(wsSN, L"0123-4567-89")
_USB_STRING_(wsCDC, L"CDC Device")
_USB_STRING_(wsCDCData, L"CDC Data")

Ошибка -  "wide character array initialized from incompatible wide string" usblib.c /USB_CDC_alexsam/src line 178 C/C++ Problem

Макрос выглядит так:

Код:
#define _USB_STRING_(name, ws)                  \
    \
const struct name \
{                          \
        uint8_t  bLength;                       \
        uint8_t  bDescriptorType;               \
        uint16_t bString[(sizeof(ws) - 2) / 2]; \
    /*uint8_t bString[(sizeof(ws))];*/    	\
    \
} \
name __attribute__((used, section("usb_string"))) = {sizeof(name), 0x03, ws};

Почему массив не совместим с расширенным символьным типом, как это исправить?

P.S Сильно не пинайте только :)

93

Millyvolt написал(а):

К проекту True Studio добавил файлы из этого проекта:
---
Почему массив не совместим с расширенным символьным типом, как это исправить?

Замени букву L на u.
Было
_USB_STRING_(wsVendor, L"SaeWave.com")
стало
_USB_STRING_(wsVendor, u"SaeWave.com")

Я перенес проект на GCC. Тут можно взять:
https://github.com/Utyff/STM32F103-USB- … ee/GCC_fix

94

Utyf написал(а):

Я перенес проект на GCC. Тут можно взять:

спасибо.

95

Что-то я забыл выложить ссылочку на свой CDC - эмуляция PL2303 на STM32F103. Код уже сую "в продакшн" ☺

96

Может почистить этот топик от офтопа, собрать ссылки на проекты в первый пост и перенести топик в раздел stm32?

97

У меня уже все работает, но только под линуксом. Почему-то ни под ондроедом, ни под игровыми приставками эмуляция PL2303 не работает: устройство не опознается. Возможно, я накосячил с таймингами. Сижу, ковыряюсь в выхлопе wireshark. Пакеты совершенно одинаковые: что от китайского "настоящего" PL2303, что от STM32, но вот от китайского ошибок нет, а от моего при коннекте на чтение возникает pl2303 ttyUSB0: pl2303_set_line_request - failed: -32. Проверил по таймингам — одинаково. Вот же чертовщина!

Вот же япона мать! Нашел проблемную строчку: здесь ZLP не нужен. Никаких ошибок в dmesg не вижу, отлично все. Но подключаю к приставке — и фигвам! После обеда на ондроеде проверю, если в нем будет работать, забью на мастдайку гнойную!

Почистить и выделить лишь дельное стоило бы...

98

Методом "Монте-Карло" починил. Изменения закоммитил.
Вот как должен выглядеть обработчик второго прогона SET_LINE_CODING:

Код:
        if(ep.rx_cnt){
            if(setup_packet.bRequest == SET_LINE_CODING){
                linecoding_handler((usb_LineCoding*)ep0databuf);
            }
        }
        // wait for new data from host
        epstatus = SET_VALID_RX(epstatus);
        epstatus = SET_VALID_TX(epstatus);

Вы здесь » Микроконтроллеры » Архив » USB CDC для STM32F103