реклама на сайте
подробности

 
 
20 страниц V  « < 11 12 13 14 15 > »   
Reply to this topicStart new topic
> STM32F103x, делимся впечатлениями
Axel
сообщение Jun 24 2009, 08:54
Сообщение #181


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Не надо.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jun 24 2009, 09:03
Сообщение #182


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Axel @ Jun 24 2009, 12:54) *
Не надо.

Спасибо!
Хотя в некоторых схемах для защиты используется блок диодов (U4 на схеме):
Прикрепленное изображение


От него также придётся отказаться, в случае self-powered девайса... sad.gif

ЗЫ: а-а, так ведь изначально на пинах D+\- нет напряжения? Шина в состоянии сброса?
Go to the top of the page
 
+Quote Post
Axel
сообщение Jun 24 2009, 10:19
Сообщение #183


Местный
***

Группа: Свой
Сообщений: 480
Регистрация: 21-11-04
Пользователь №: 1 188



Цитата(sonycman @ Jun 24 2009, 12:03) *
От него также придётся отказаться, в случае self-powered девайса...


Можно не отказываться, а использовать USB-шные 5V вместо 3.3. Вообще-то эта хрень нужна только для прохождения тестов, а по жизни - вполне можно и без нее (я использую...).
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 2 2009, 16:06
Сообщение #184


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Подскажите, пожалуйста, насчёт двойной буферизации USB конечных точек для STM32.
Мануал по этому поводу (RM0008, последняя июньская версия) пестрит ошибками и отсутствующей информацией.

Например, не указано, где именно находятся регистры указателей на буфера - ADDRn_TX_0, ADDRn_TX_1, ADDRn_RX_0, ADDRn_RX_1.
Также мануал утверждает, что счётчики количества данных COUNTn_TX_0 и COUNTn_TX_1 находятся в одном 32-ух битном регистре, тогда как библиотека STM32_USB-FS-Device_Lib_V3.0.1 юзает два разных 16-ти битных регистра...

И ещё - как правильно переключать буфера с одного на другой? Достаточно ли просто переключить бит DTOG или надо ещё и статус EP поставить в VALID?

Может, есть какие-то примеры реализации bulk double buffering endpoints?

Не понял про STALL для буферизованных EP, вычитал в UM0424 User manual:
Double buffer STATUS
The simple and double buffer modes use the same functions to manage the
Endpoint STATUS except for the STALL status for double buffer mode. This
functionality is managed by the function: SetDouBleBuffEPStall();

Вот код:
Код
void SetDouBleBuffEPStall(uint8_t bEpNum, uint8_t bDir)
{
  uint16_t Endpoint_DTOG_Status;
  Endpoint_DTOG_Status = GetENDPOINT(bEpNum);
  if (bDir == EP_DBUF_OUT)
  { /* OUT double buffered endpoint */
    _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1);
  }
  else if (bDir == EP_DBUF_IN)
  { /* IN double buffered endpoint */
    _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1);
  }
}

Как видно, от обычной функции установки статуса она отличается отсутствием маскирования toggle битов, в результате чего все они будут сброшены.
И что, в этом был весь сокровенный смысл этой "необычной" функции??

Причём в референсном мануале про отличия установки STALL между буферизованными и нет bulk EP нет вообще ничего!
rolleyes.gif

Из-за отсутствия этой информации у меня возникают нехорошие сомнения в качестве кода USB библиотеки для STM32.

К примеру, вышеприведённый код пытается установить два бита статуса в состояние STALL (01) путём сброса только одного бита.
Это у него получится только при условии, что он был перед этим в состоянии 1, то есть VALID.
А если статус был NAK (10), то вместо STALL получится DISABLED (00). sad.gif

Блин, запарили эти индейцы своими библиотеками.
Вместо того, чтобы нормально объяснить механизм, впаривают тут всякое...

ЗЫ: форум на st.com вообще умер, ответа от спецов не дождёшься, одни только вопросы...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 4 2009, 09:30
Сообщение #185


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Вроде разобрался немного с двойной буферизацией EP.
Пришлось смотреть, как всё это работает по коду USB библиотеки от ST, так как мануал действительно откровенно врёт и недоговаривает по поводу размещения регистров буферов.

Скоро доделаю свой Mass Storage девайс (на SD карте в режиме SPI и Full Speed обмен c PC).
Со скоростями в режиме чтения прикольно получается.
Сначала было около 520 KB\sec (последовательное чтение - получили запрос - прочитали - отдали данные).
Потом 820 KB\sec (параллельное считывание с карты во время передачи данных из буфера).
С добавлением двойной буферизации стало ~950 KB\sec.

Интересно, это потолок для Full Speed, или можно ещё быстрее сделать на STM32?
Вроде теоретический потолок ~1200 KB\sec, но ведь MSC протоколу ещё надо команды и ответ на них передавать...

С другой стороны, может "притормаживать" и карта памяти (SPI), хотя в режиме непрерывного чтения она способна отдавать ~1300 KB\sec данных...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jul 4 2009, 20:29
Сообщение #186


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Поднял частоту SPI, на котором сидит карта памяти, до 18 МГц.
Результаты те же - чтение до 950 килобайт\сек., запись - до 800 к\сек.
Видимо, уже упёрся в USB...
Ладно, заоблачных скоростей от FS явно не получить, да и не надо пока...

Что прикольно - увеличение размера внутреннего буфера чтения\записи приводит к росту скорости записи, а скорось чтения наоборот, незначительно падает laughing.gif
Go to the top of the page
 
+Quote Post
alexvm
сообщение Aug 18 2009, 08:44
Сообщение #187


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 27-08-08
Из: Липецк
Пользователь №: 39 845



TE-STM32F103RE - «Махаон» вопрос по работе с SDIO

Работаю с этим модулем вторую неделю, пробовал примеры из
STM32F10xFWLib - V2.0.3 Patch1 c MT-Link-6 JTAG/SWD.
(Boot в соответствии с RM0008 - Reference manual rev.9 стр.48)

Интересует работа модуля SDIO с FWLib от ST.
Я немного доработал main.c для определения наличия карты и подачи питания + индикация светодиодами о результатах теста microSD.
С картами не SDHC проблем нет, но с SDHC (Kingston microSD 4 и 8 Gb)
библиотечная софтина работает нормально только при подключенном JTAG или
SWD из под IAR 5.3 (boot - Main Flash memory, SDIO_BusWide_4b).
По сбросу (без JTAG или SWD) тест проходит только с картами не SDHC типа.

На http://www.terraelectronica.ru/board/index...hl=te-stm32f103 пока вопрос не решён.
На буржуйском ST форуме поднималась похожая проблема но там обходились с SDIO_BusWide_1b.

Может кто нибудь повторить пример на терровской или другой плате с SDIO_BusWide_4b
(STM32F10xFWLib - V2.0.3 with Patch1\FWLib\examples\SDIO) для SDHC и сообщить о результатах?
Go to the top of the page
 
+Quote Post
khach
сообщение Aug 18 2009, 10:06
Сообщение #188


Гуру
******

Группа: Свой
Сообщений: 3 439
Регистрация: 29-12-04
Пользователь №: 1 741



Кому-нибудь попадались ссылки на дешевые демоплаты STM32 с интегрированными силовыми цепями для управления моторами? Интересуют как щеточные, так и безщеточные и АС сервы.
Что то по типу линейки Luminary http://www.luminarymicro.com/products/rdk_bldc.html и http://www.luminarymicro.com/products/rdk_bdc.html. Кстати, никто не знает случайно в каком формате luminary дает проекты своих плат? А то схема в Альтиуме отдается свободно, а файл с расширением pcb открыть невозможно. Чтобы не было оффтопом- хотел использовать проекты luminary в качестве "рыбы" для STM32.
Go to the top of the page
 
+Quote Post
klen
сообщение Aug 19 2009, 17:44
Сообщение #189


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



2_alexvm

у меня махаон заработал в 4битном режиме SDIO
флешка Transcent 4Gb MMAGRO4GUDCA-DB, 6 класс, SDHC

скорость 1 мегабайт запись, >5 чтение. если померил правильно ( 1 гиг зщаписи чтения мерял на время) .
исходник из FirmWare не заработал сразу.
косяк с таймером SDIO был. зависало нафиг все.
тоже добавил детектирование карты.


вопрос зЮбрам smile.gif

нашел косяг в GCC для Corterx'ов
не вдаваясь в подробности ситуация такая что вижу косяг но не могу понять как исправить. я думал что знаю как работают инструкции ITxxx COND

оказалось не понимаю.. sad.gif

в доке написано что суфикс IT определяем исполнятся или нет инструкции соответствующей суфиксу в соответствии с COND условием.
если условие не выполнено то просто проталкивается NOP и типа это дает фиксирование время прохода и линию на конвеере.
но... сами иструкции условные сами по себе. и ъто можно суфиксами инструкций сделать тоже самое (кстате компиллер их всерано требует для блока IT)
они также в NOP превращаются
а где сокровенный смысл и разница?

оъясните. туплю .....устал топорщить мозговоую кость.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Aug 19 2009, 18:48
Сообщение #190


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Дело в том, что инструкции THUMB2, в отличие от ARM, не могут быть условными.
То есть могут, но не все.
Эта фича (IT) позволяет абсолютно все инструкции юзать как условные.
По крайней мере я так понимаю.
Go to the top of the page
 
+Quote Post
alexvm
сообщение Aug 23 2009, 21:08
Сообщение #191


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 27-08-08
Из: Липецк
Пользователь №: 39 845



TE-STM32F103RE - «Махаон» работа с SDIO.
Проблема в работе с некоторыми SDНС картами оказалась в несоблюдении
в данной версии_1.00 платы SD Memory Card Hardware Interface
(отсутствуют 5 подтягивающих резисторов).
В STM3210E-EVAL evaluation board (UM0488) на SDIO они установлены (и на SWJ тоже).

Про Hi-Z state: ST - RM0008, Rev 9, стр.464-467.
(If the CPSM is not in the Send state, the SDIO_CMD output is in the Hi-Z state,
as shown in Figure 187 on page 464.
Idle: the data path is inactive, and the SDIO_D[7:0] outputs are in Hi-Z.)
Для поддержания Hi-Z состояния выводы порта должны быть сконфигурированны в Open Drain Mode,
и тогда наличие подтягивающих резисторов на линии передачи оправдано,
но в данном случае все выводы SDIO сконфигурированны в FWLib в Push-Pull Mode (кроме SDCard_Detect)
и в процессе работы конфигурация не меняется, т.е. вроде никакого Hi-Z state быть
не должно, если только вывод не вырубается автоматом аппаратно.
Однако добавление 5 подтягивающих резисторов решает проблему работы с некоторыми SDHC картами.

Причём в режиме отладки c SWJ-DP всё работало и без этих резисторов, поэтому пришлось вылавливать косяки
через HyperTerminal.
Без подтягивающих резисторов карта сначала не проходила инициализацию в SD_PowerON() - вываливалась с
SD_COM_CRC_FAILED после CMD55 (добавление повторов команды эту проблему решало),
но дальше всё висло в SD_EnableWideBusOperation(SDIO_BusWide_4b)--> SDEnWideBus(ENABLE)-->
FindSCR(RCA, scr)--> в цикле:
Код
while (!(SDIO->STA & (SDIO_FLAG_RXOVERR | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_DBCKEND | SDIO_FLAG_STBITERR)))
  {
    if (SDIO_GetFlagStatus(SDIO_FLAG_RXDAVL) != RESET)
    {
      *(tempscr + index) = SDIO_ReadData();
      index++;
    }
  }

Вариации на тему изменения рабочей частоты, фазы синхронизации, TIMEOUT и SDIO_Wait результата не давали.

Ниже приведён пример листинга HyperTerminal рабочей программы SDIO для терровского махаона
и файл main.c который можно установить взамен библиотечного из FWLib-V2.0.3.
(в файле sdcard.c в cardinfo->CardCapacity = (cardinfo->SD_csd.DeviceSize + 1) * 512 * 1024; убрать *1024, чтобы не было переполнения)
В опциях препроцессора указать EMB_FLASH взамен VECT_TAB_FLASH для загрузки во flash.

Прикрепленный файл  main.rar ( 4.5 килобайт ) Кол-во скачиваний: 543


SDIO DEBUG:

SD Init
SD_GetCardInfo:
CardType = SDIO_HIGH_CAPACITY_SD_CARD
CSD Version 2.0
CardCapacity = 7600 Mb
CardBlockSize = 512 byte
CardComdClasses = 5
MaxBusClkFrec = 25 MHz

SD SelectDeselect
EnableWideBusOperation
Erase
Set Transfer Mode
ReadMultiBlocks
Compare the buffer with zero
Write block of 512 bytes on address 0
Read block of 512 bytes from address 0
Check the correctness of written data
TransferStatus1 = 1
Write multiple block of many bytes on address 0
Read block of many bytes from address 0
Check the correctness of written data
TransferStatus2 = 1
Status = 42_SD_OK

Остаётся однако совершенно непонятным вопрос - почему без подтягивающих резисторов на SDIO
в режиме отладки из под IAR_5.3 всё выполнялось отлично и по шагам и в реалтайме..... wacko.gif
Go to the top of the page
 
+Quote Post
sherr
сообщение Aug 24 2009, 06:11
Сообщение #192


Местный
***

Группа: Участник
Сообщений: 257
Регистрация: 10-06-06
Из: Ставрополь
Пользователь №: 17 955



Цитата
Недавно купили кит EKI-LM3S6965 Ethernet Evaluation Kit for IAR Embedded Workbench
от Stellaris
так вот на нем интегрирован JTAG в виде FTDI2232C, и есть фича при удерживании reset при включекнии он может работать наружу, пробовал подключать его к ARM7 но IAR пишет что LMFTDI поддерживает только Cortex-M3, похоже можно любой cortex подключить


Извиняюсь, что немного не по теме --- есть плата с LP2478, которую надо отлаживать и есть плата EKI-LM3S1968 c
вышеупомянутой отладкой -- так вот-- есть ли вариант их подружить?
Go to the top of the page
 
+Quote Post
alexvm
сообщение Aug 24 2009, 10:20
Сообщение #193


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 27-08-08
Из: Липецк
Пользователь №: 39 845



Проверил сейчас работу SDIO c DosFS на махаоне SDIO_DosFS_V02 - вроде всё пашет и с SDHC smile.gif
Но как то больше efsl + SPI раньше использовал.
А делал ли кто-нибудь порт ST_SDIO под efsl или fatfs?
Go to the top of the page
 
+Quote Post
klen
сообщение Aug 24 2009, 16:22
Сообщение #194


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Цитата(alexvm @ Aug 24 2009, 14:20) *
Проверил сейчас работу SDIO c DosFS на махаоне SDIO_DosFS_V02 - вроде всё пашет и с SDHC smile.gif
Но как то больше efsl + SPI раньше использовал.
А делал ли кто-нибудь порт ST_SDIO под efsl или fatfs?


у меня fatfs на SDHC c махаоном работает.
Go to the top of the page
 
+Quote Post
MasterAlexei
сообщение Dec 7 2009, 13:42
Сообщение #195





Группа: Участник
Сообщений: 5
Регистрация: 1-02-08
Из: Германия
Пользователь №: 34 674



Приветствую!
Программлю SPI на STM32F103RBT6. До этого сделал SPI в режиме SLAVE через прерывания, все работало прекрасно. Решил переключить в MASTER, так как только NVIC настраиваю, так он падает в SPI прерывание и там и остается на всю оставшуюся жисть до ресета. Причем в прерывании выставленны как RX так и TX флаги, типа он и принял чего то и послал чего то.
Пины все выставил вроде как правильно. NSS пин выставил в Софт-режим. На сам пин вроде вывел 1.

По идее, проц даже и не должен попадать в прерывание, как только проинициализируешь СПИ переферию.
А он даже не вылазит от туда.

Ни у кого такого не было случаем?


--------------------
мои поделки на
http://fun-electronic.net/
Go to the top of the page
 
+Quote Post

20 страниц V  « < 11 12 13 14 15 > » 
Reply to this topicStart new topic
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 11:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01505 секунд с 7
ELECTRONIX ©2004-2016