STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

Re: STM32 новичку в ARM что к чему

Сообщение scorpi_0n »

Reflector писал(а):
scorpi_0n писал(а): На Ф4 только вручную, обычным ногодрыгом. Там нет хардварного nss.
Вообще-то хардварный NSS есть на всех STM32, но только в режиме TI.
Разве? Даже в СТМ32Ф100 есть режим TI?
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

scorpi_0n писал(а):Разве? Даже в СТМ32Ф100 есть режим TI?
Ты прав, у F1 оказался самый старый SPI, который от F2/F4/L1... только отсутствием TI mode и отличается.
Реклама
Alex_Golubev
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Re: STM32 новичку в ARM что к чему

Сообщение Alex_Golubev »

Вы бы лучше сказали как дергать вывод cs.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: STM32 новичку в ARM что к чему

Сообщение dosikus »

Alex_Golubev , дергай ручками, хардовый NSS узкоспециализированная хрень и в большинстве случаев бЭсполезен.
Реклама
Эиком - электронные компоненты и радиодетали
Alex_Golubev
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Re: STM32 новичку в ARM что к чему

Сообщение Alex_Golubev »

Хорошо.
Как я понял вот эта функция HAL_SPI_TxRxCpltCallback(); вызывается тогда когда происходит конец передачи данных по spi по ней можно устанавливать на ножки единицу. А какая функция вызывается когда начинается передача? Когда нужно ставить ножку в нуль.
Реклама
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: STM32 новичку в ARM что к чему

Сообщение Мурато Мяуконни »

Хардовый NSS имеет смысл использовать в связке с NSSP (Pulse mode) для управления, например, регистрами HC595 или чем-то подобным, когда требуется после передачи очередной порции инфы размером от полубайта до 2 байт защелкнуть эту инфу поднятием ножки NSS. Но режим NSSP есть далеко не во всех микроконтроллерах. Вообще, довольно странная комплектация модулями в линейках. Вроде бы микроконтроллер мощный стоит, а модуль упрощенный. И наоборот, в маломощном контроллере навороченный модуль. Бывает, че поделать...
В обычном режиме NSS опускается, когда модуль SPI включен битом SPI_CR1_SPE. Тут тоже есть смысл использовать хардовый NSS, если в работе модуль может выключаться. Хотя бы для того, чтобы не забыть вовремя программно дернуть NSS. Потому что если не поднять NSS при выключенном модуле, можно словить ложные импульсы на приемном устройстве.
Если SPI в работе не выключается, и на шине висит только одно устройство, то дергать SS вообще не обязательно. После включения модуля SPI опускаем программный NSS и больше не паримся.
Если на одной шине висит несколько устройств, то хардовый NSS не используется. Вместо этого программно дергаются ножки SS для каждого устройства.
Режим мультимастера, думаю, рядовые граждане не используют.
Подпись убрал вместе с автором. aen
Реклама
Alex_Golubev
Встал на лапы
Сообщения: 87
Зарегистрирован: Вс ноя 15, 2015 05:54:13

Re: STM32 новичку в ARM что к чему

Сообщение Alex_Golubev »

Есть устройства которые требуют наличия линии cs (например tdc7200).
Сделал так:
устанавливаю cs в нуль
Спойлер

Код: Выделить всё

  
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_RESET);
HAL_SPI_Transmit_DMA( &hspi4, array_spi, 10);

устанавливаю cs в один
Спойлер

Код: Выделить всё

void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi){
  if (hspi->Instance == hspi4.Instance)
    {
        HAL_GPIO_WritePin(GPIOE, GPIO_PIN_4, GPIO_PIN_SET);
    }
}
Мурато Мяуконни
Прорезались зубы
Сообщения: 203
Зарегистрирован: Сб ноя 19, 2016 21:05:48

Re: STM32 новичку в ARM что к чему

Сообщение Мурато Мяуконни »

Прежде, чем поднимать CS (NSS) в 1, надо а-а-бя-язательно убедиться, что передача по SPI окончилась. Для этого нужно отслеживать бит занятости BSY. Если он =1, то нужно дождаться пока будет BSY=0, это будет означать завершение текущей передачи. Иначе, последний передаваемый байт потеряется.
Подпись убрал вместе с автором. aen
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: STM32 новичку в ARM что к чему

Сообщение aam »

А я с этим NSS в F0 поначалу напоролся - по умолчанию включен аппаратный NSS и SPI сразу вырубался с ошибкой "Mode Fault", т. к. модуль читал лог. 0 с незадействованной ноги NSS. Все заработало, когда я отключил аппаратный NSS записав SSM=1 и SSI=1 в регистре CR1.

Скажите, кто-нибудь пользовался CMSIS-DSP на STM32F0? Хочу БПФ использовать.

Написал такой код:

Код: Выделить всё

#define ARM_MATH_CM0
#include <arm_math.h>


void Calc_FFT()
{
  arm_rfft_instance_q15 S;
  arm_cfft_radix4_instance_q15 S_CFFT;
  
  arm_rfft_init_q15(&S, &S_CFFT, 128, 0, 0);
  
}

Чисто по приколу нажал "Make". После чего линкер выдал такое:

Код: Выделить всё

Error[Lp011]: section placement failed 
          unable to allocate space for sections/blocks with a total estimated minimum size of 0x12f94 bytes (max align 0x4) in <[0x08000000-0x08007fff]> (total  
uncommitted space 0x7f4c). 
 
  20 918 bytes of readonly  code memory 
  56 994 bytes of readonly  data memory 
   2 201 bytes of readwrite data memory 
:shock: :shock: :shock: :facepalm:

Может я что в настройках библиотеки не сделал? Должна же она как-то в F0 помещаться!
Аватара пользователя
kaschak
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт май 10, 2013 15:56:40

Re: STM32 новичку в ARM что к чему

Сообщение kaschak »

Здравствуйте.
Начинаю изучение стм32, и при попытке отладки она зацикливается на одной строчке.
На 1043 строчке обработка проходит за 8 тактов и курсор остаётся на строчке, и соответственно всё по новой, получается замкнутый цикл.
Проект пишу из статьи, вроде всё понятно(на сколько возможно при моём познании вопроса), но по этой же причине даже не знаю куда копать.
ЗЫ Если отошлёте к мануалам, просьбы тыкнуть конкретно и с объяснением, а то я и с описаниями на русском раздупляюсь побуквенно(иногда буквально) и не с первого прочтения.
Вложения
st.png
(95.29 КБ) 618 скачиваний
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

kaschak писал(а):Начинаю изучение стм32, и при попытке отладки она зацикливается на одной строчке.
В пути видно 103, так что вероятно у тебя F103, а у него нет PLL2, он только у F105/107.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32 новичку в ARM что к чему

Сообщение Мурик »

kaschak писал(а):Проект пишу из статьи
Тогда не помешало бы ссылку на статью. Возможно что в ней рассматривается другая модель МК.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32 новичку в ARM что к чему

Сообщение Myp3ik »

kaschak, потому что у Вас выбран STM32F10X_CL вместо STM32F10X_MD
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

aam писал(а): Должна же она как-то в F0 помещаться!
Столкнулся с этим когда пытался прикрутить БПФ к STM32F030F4P6. В итоге написал свою функцию БПФ. :solder:
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

Подскажите пожалуйста где можно посмотреть пример БФП на F3.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение Pink-Pank »

А в чем, собсно, проблема портировать любой пример из сети по БПФ на F3?
Fucking static initialization order fiasco
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

Попробовал этот код

Код: Выделить всё

arm_rfft_instance_q15 S;
uint32_t S_CFFT;
q15_t fft_Sbuff[128]={1,2,3};
q15_t fft_Dbuff[128];
	
 arm_rfft_init_q15(&S, S_CFFT, 128, 0);
 arm_rfft_q15(&S,fft_Sbuff,fft_Dbuff);
Он вызывает Hard_Fault
Аватара пользователя
Andrew Martin
Вымогатель припоя
Сообщения: 606
Зарегистрирован: Вт июн 25, 2013 18:45:07

Re: STM32 новичку в ARM что к чему

Сообщение Andrew Martin »

А чем БПФ Ивана Меллена не устраивает? На вид добротный асмовый hand-made. Соберёте gas-ом объектник и прилинкуете.

https://e2e.ti.com/support/microcontrol ... 71/t/44034
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

Re: STM32 новичку в ARM что к чему

Сообщение baghear »

Вы его пользовали?
Аватара пользователя
kaschak
Встал на лапы
Сообщения: 101
Зарегистрирован: Пт май 10, 2013 15:56:40

Re: STM32 новичку в ARM что к чему

Сообщение kaschak »

Myp3ik писал(а):kaschak, потому что у Вас выбран STM32F10X_CL вместо STM32F10X_MD
Мда, ваша правда, выбирал по аналогии с название мк, вот и не угадал. Спасибо большое. Чувствую мне нужно более подробное руководство по освоению. Да кстати хороший вопрос - есть ли такое руководство? чтоб разжовано и на русском, а то с моим ангицким я освою когда всё устареет. Вот скажем мне попадалась разжованая до нельзя информация о GPOI и RCC, так теперь для меня текст программы не выглядит тарабарщиной, может и не понимаю почти ничего, но хотя б логику вижу хоть какую то. Читаю соответствующую тему здесь на форуме, но пока не густо.
Ответить

Вернуться в «ARM»