Разве? Даже в СТМ32Ф100 есть режим TI?Reflector писал(а):Вообще-то хардварный NSS есть на всех STM32, но только в режиме TI.scorpi_0n писал(а): На Ф4 только вручную, обычным ногодрыгом. Там нет хардварного nss.
STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
- Реклама
Re: STM32 новичку в ARM что к чему
Ты прав, у F1 оказался самый старый SPI, который от F2/F4/L1... только отсутствием TI mode и отличается.scorpi_0n писал(а):Разве? Даже в СТМ32Ф100 есть режим TI?
-
Alex_Golubev
- Встал на лапы
- Сообщения: 87
- Зарегистрирован: Вс ноя 15, 2015 05:54:13
Re: STM32 новичку в ARM что к чему
Вы бы лучше сказали как дергать вывод cs.
Re: STM32 новичку в ARM что к чему
Alex_Golubev , дергай ручками, хардовый NSS узкоспециализированная хрень и в большинстве случаев бЭсполезен.
-
Alex_Golubev
- Встал на лапы
- Сообщения: 87
- Зарегистрирован: Вс ноя 15, 2015 05:54:13
Re: STM32 новичку в ARM что к чему
Хорошо.
Как я понял вот эта функция HAL_SPI_TxRxCpltCallback(); вызывается тогда когда происходит конец передачи данных по spi по ней можно устанавливать на ножки единицу. А какая функция вызывается когда начинается передача? Когда нужно ставить ножку в нуль.
Как я понял вот эта функция 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 для каждого устройства.
Режим мультимастера, думаю, рядовые граждане не используют.
В обычном режиме 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 что к чему
Есть устройства которые требуют наличия линии cs (например tdc7200).
Сделал так:
устанавливаю cs в нуль
устанавливаю cs в один
Сделал так:
устанавливаю 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
Re: STM32 новичку в ARM что к чему
А я с этим NSS в F0 поначалу напоролся - по умолчанию включен аппаратный NSS и SPI сразу вырубался с ошибкой "Mode Fault", т. к. модуль читал лог. 0 с незадействованной ноги NSS. Все заработало, когда я отключил аппаратный NSS записав SSM=1 и SSI=1 в регистре CR1.
Скажите, кто-нибудь пользовался CMSIS-DSP на STM32F0? Хочу БПФ использовать.
Написал такой код:
Чисто по приколу нажал "Make". После чего линкер выдал такое:
Может я что в настройках библиотеки не сделал? Должна же она как-то в F0 помещаться!
Скажите, кто-нибудь пользовался 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);
}
Код: Выделить всё
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
Может я что в настройках библиотеки не сделал? Должна же она как-то в F0 помещаться!
Re: STM32 новичку в ARM что к чему
Здравствуйте.
Начинаю изучение стм32, и при попытке отладки она зацикливается на одной строчке.
На 1043 строчке обработка проходит за 8 тактов и курсор остаётся на строчке, и соответственно всё по новой, получается замкнутый цикл.
Проект пишу из статьи, вроде всё понятно(на сколько возможно при моём познании вопроса), но по этой же причине даже не знаю куда копать.
ЗЫ Если отошлёте к мануалам, просьбы тыкнуть конкретно и с объяснением, а то я и с описаниями на русском раздупляюсь побуквенно(иногда буквально) и не с первого прочтения.
Начинаю изучение стм32, и при попытке отладки она зацикливается на одной строчке.
На 1043 строчке обработка проходит за 8 тактов и курсор остаётся на строчке, и соответственно всё по новой, получается замкнутый цикл.
Проект пишу из статьи, вроде всё понятно(на сколько возможно при моём познании вопроса), но по этой же причине даже не знаю куда копать.
ЗЫ Если отошлёте к мануалам, просьбы тыкнуть конкретно и с объяснением, а то я и с описаниями на русском раздупляюсь побуквенно(иногда буквально) и не с первого прочтения.
- Вложения
-
- st.png
- (95.29 КБ) 618 скачиваний
Re: STM32 новичку в ARM что к чему
В пути видно 103, так что вероятно у тебя F103, а у него нет PLL2, он только у F105/107.kaschak писал(а):Начинаю изучение стм32, и при попытке отладки она зацикливается на одной строчке.
Re: STM32 новичку в ARM что к чему
Тогда не помешало бы ссылку на статью. Возможно что в ней рассматривается другая модель МК.kaschak писал(а):Проект пишу из статьи
Re: STM32 новичку в ARM что к чему
kaschak, потому что у Вас выбран STM32F10X_CL вместо STM32F10X_MD
Иван Сусанин - первый полупроводник 
- Andrew Martin
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Вт июн 25, 2013 18:45:07
Re: STM32 новичку в ARM что к чему
Столкнулся с этим когда пытался прикрутить БПФ к STM32F030F4P6. В итоге написал свою функцию БПФ.aam писал(а): Должна же она как-то в F0 помещаться!
Re: STM32 новичку в ARM что к чему
Подскажите пожалуйста где можно посмотреть пример БФП на F3.
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: STM32 новичку в ARM что к чему
А в чем, собсно, проблема портировать любой пример из сети по БПФ на F3?
Fucking static initialization order fiasco
Re: STM32 новичку в ARM что к чему
Попробовал этот код
Он вызывает Hard_Fault
Код: Выделить всё
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);
- Andrew Martin
- Вымогатель припоя
- Сообщения: 606
- Зарегистрирован: Вт июн 25, 2013 18:45:07
Re: STM32 новичку в ARM что к чему
А чем БПФ Ивана Меллена не устраивает? На вид добротный асмовый hand-made. Соберёте gas-ом объектник и прилинкуете.
https://e2e.ti.com/support/microcontrol ... 71/t/44034
https://e2e.ti.com/support/microcontrol ... 71/t/44034
Re: STM32 новичку в ARM что к чему
Вы его пользовали?
Re: STM32 новичку в ARM что к чему
Мда, ваша правда, выбирал по аналогии с название мк, вот и не угадал. Спасибо большое. Чувствую мне нужно более подробное руководство по освоению. Да кстати хороший вопрос - есть ли такое руководство? чтоб разжовано и на русском, а то с моим ангицким я освою когда всё устареет. Вот скажем мне попадалась разжованая до нельзя информация о GPOI и RCC, так теперь для меня текст программы не выглядит тарабарщиной, может и не понимаю почти ничего, но хотя б логику вижу хоть какую то. Читаю соответствующую тему здесь на форуме, но пока не густо.Myp3ik писал(а):kaschak, потому что у Вас выбран STM32F10X_CL вместо STM32F10X_MD


