Перейти к содержанию
    

akimych

Участник
  • Постов

    72
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о akimych

  • Звание
    Участник
    Участник
  1. Есть ли возможность в j-link v5 (mt-link) подключить SWO? А то SWD работает, мож и SWO как-то можно...
  2. А если глянуть call stack при попанаднии в SWI_Handler? Откуда вызов приходит. это не то? Хотя там вроде при использовании RTX kernel, но уж очень симптомы похожи. Вообще если кейл зачем-то вызывает это прерывание, то он должен вешать на него какой-то обработчик. Можно закоментировать SWI_Handler в стартапе, как предлагается по ссылке, и посмотреть, что туда закомпилируется. Я хотя не очень понял, как они предлагают просто закоментить строчку, при этом же вся таблица съедет. Странно вообще. Каком смысл кейлу использовать SWI и для чего, если не используется RTX.
  3. В примере 2 SPI используюются, т.к. они гоняют байты из одного SPI в другой. А иначе ест-но только один канал нужен - мастер. Слейвом будет M25P64. Инициализация уже есть (до /* Enable DMA channels */). Передача - настраиваем дма (адрес, длина буфера, при выключеном канале) и в ключаем канал. Ждем окончания передачи. С приемом тоже настраиваем, а потом возможно 2 варианта. Т.к. для приема нужно выдать клок, то либо надо в цикле (или тоже через дма) отправлять что-нибудь, либо включить режим полудуплекс-прием, когда SPI сам будет непрерывно гнать клок, пока его не выключат. Я использовал второй способ, в частности из-за того, что есть режим позволяющий сэкономить один вывод. Но столкнулся с такой особенностью, что при SPI_BaudRatePrescaler_2 и SPI_DataSize_8b иногда теряются байты. Объяснение у меня этому только одно - DMA не успевает вычитывать данные из SPI. Правда у меня еще АЦП через дма работает.
  4. Я когда выбирал склонился к SТ, из-за того, что линейка STM32F1xx достаточно разнообразна, как по начинке, так и по корпусам. Ну и под мои задачи хорошо подходит. А вообще тут надо смотреть конретно под задачу. Сколько нужно портов, какая периферия и т.д. Это в первую очередь, т.к. сразу уменьшается кол-во возможных кандидатов.
  5. Вот мне тоже интересно, так уж ли в этом коде необходимо DSB. Но core_cm3.h от STM32 библиотеки оно тоже есть. static __INLINE void NVIC_SystemReset(void) { SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) | (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) | SCB_AIRCR_SYSRESETREQ_Msk); /* Keep priority group unchanged */ __DSB(); /* Ensure completion of memory access */ while(1); /* wait until reset */ }
  6. Не видя кода сложно что-то сказать. Могу лишь предположить, что в обработчике прерывания не сбрасывается флаг, вызвавший прерывание и мк постоянно висит в обработчке.
  7. Если смотреть "STM32VLDISCOVERY firmware package (AN3268)"... А папка CMSIS скопирована? А еще надо CMSIS\CM3\CoreSupport CMSIS\CM3\DeviceSupport\ST\STM32F10x <- тут stm32f10x.h По идее, без этих путей компилятор должен был ругаться в первую очередь на отсутсвие stm32f10x.h Вообще надо определять USE_STDPERIPH_DRIVER, т.к. в stm32f10x.h #ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_conf.h" #endif А в stm32f10x_conf.h (в каждом проекте свой) должны быть соотв. include, в частности stm32f10x_gpio.h, в котором определены GPIO_Pin_X и т.п. Это касается использования stm-вской библиотеки вообще. Что делает USE_STM32_DISCOVERY я не понял, ни в одном файле не нашел этого символа. И кстати, дискавери - STM32F10X_MD_VL (LD - 16/32 КБ флеша, меньше периферии).
  8. На той схеме VTREF еще подается через делитель на 3-ий пин (AD4).
  9. Сомневаюсюь, что вообще планируют. F217 уже вроде как добавили, а он позже появился. Так же как и F100 уже давно могли бы добавить, там же различий почти нет с F101. Забавно, что кейл почему-то думает, что у них симулятор поддерживает частично F107. На сайте написано и в настройках симулятора именно F107 выставляется, если его выбрать. С F100 честно пишут, что не поддерживается и в настройках симулятора сразу прописывается симулятор ядра.
  10. stm32f103

    Вообще если я правильно понимаю смысл "DMA burst length" (в TIMx_DCR), то можно по одному запросу записать данные в неск. регистров таймера подряд. Только тогда данные должны быть не в 4х массивах, а в одном, где каждый элемент - 4 сэмпла для 4х каналов.
  11. С помощью паяльника и в 5ой есть. Ругается не на SWD, а на отсутствие VTREF. Хотя можно конечно его обмануть и подать питание на vtref с самого жтага или еще как-то.
  12. А с чего он вдруг должен стартовать с 0х800000? Если он знать не знает, что там еще есть кроме ядра, а флеш частью ядра не является. Дело в том как устроен симулятор кейла. Не умеет он симулировать по отдельности. Типа вот тут у нас уарты одинаковые - это я могу, а вот тут что-то другое не могу. Просто симулятор не знает чипа stm32f107 вообще. Потому и ведет себя подобным образом, симулирует только ядро, стартует с 0 и т.д. Если очень хочется, можно заставить симулятор ядра стартовать с 0х800000, да только какой смысл, если можно запустить симулятор как f103 и получить тоже самое + часть периферии, которая у f107 такая же.
  13. Для ст-линка это работает, сам так использую. А вот на счет мт-линка не уверен. Он вроде бы проверяет питание (VTREF). Во всяком случае у меня ругается (мт-линк 5). На счет RST тоже вопрос. В принципе, это не обязательно. Но может пригодиться, если отладчик умеет подключаться под резетом. Собственно, это все доп. выводы в разъеме, не занимающие ног мк. Так что минимально от мк требует только SWDCLK и SWDIO. А на счет SWO самому интересно. Кто-нибудь пользовался?
  14. Потому что симулятор кейла не умеет симулировать 107ой, а 103ий умеет. Для 107го только симулятор ядра. Можно выбарть 103ий в настройках и симулировать, как 103ий.
  15. Не поддерживает симулятор кейла полноценно серию STM32F100, только ядро. Выбирайте F101 и симулируйте. Это самый простой способ. Или можно прописать DLL-ки от F101 в опциях симулятора/отладчика. Сколько уже народу на эти грабли наступило...
×
×
  • Создать...