Jump to content

    
Sign in to follow this  
Danis

STM32 – вопросы – проблемы - решения.

Recommended Posts

Легко. Кто знает, что внутри этой подпрограммы?

 

Что значит "кто"? Выше дан ее исходник, там просто счет.

 

И "счёт" - не самый объективный способ оценивать скорость процессора.

 

Я не скорость процессора оцениваю, а время выполнения куска программы.

 

 

К сведению: 50 МГц - это настройка крутизны фронтов драйвера порта.

 

 

Я в курсе, но при задании фронта к примеру в 2мгц, заставлять дрыгать ножкой с частотой 10мгц как-то не очень корректно :)

Share this post


Link to post
Share on other sites
Вопрос второй. Не понял с ногой NSS, можно ли ее аппаратно использовать для разрешения работы микрухи памяти? Или уже проще просто программно дергать любой удобной ногой?

Если SPI - мастер, NSS надо управлять как обычным GPIO. Или любой другой ногой.

Хотите "правильный" NSS, берите кортексы от NXP.

 

Share this post


Link to post
Share on other sites

Кто-нибудь встречал как правильно обрабатывать прерывания от ETH_DMA_FLAG_RBU?

Share this post


Link to post
Share on other sites
Я не скорость процессора оцениваю, а время выполнения куска программы.

Тогда советую поднять уровень оптимизации. Правильный компилятор должен убрать "счёт" за ненадобностью.

А под "подпрограммами" я имел в виду GPIO_SetBits() и GPIO_ResetBits(): никто не гарантирует, что они оптимизированы для скорости. Если нужна скорость, то следует писать в регистры напрямую.

Share this post


Link to post
Share on other sites

Каким программатором можно внутрисхемно зашить микросхему памяти spi при питании 3В?

Edited by valera_o

Share this post


Link to post
Share on other sites
Друзья, запутался в логических уровнях. Хочу сделать платку с загрузкой из внутренней флеш, т.е. всё по умолчанию.

- BOOT0 подключаю к GND

- RESET подключаю к 3.3в

что это означает с точки зрения нулей и единиц? GND="1", 3.3v="0"? Где это написано, в таблице пинов нашёл только названия и 5v tolerancy..

Точное название входа reset по даташиту - NRST. N указывает на то, что активный уровень сигнала - низкий. Вообще в большинстве случаев вход reset именно такой.

Share this post


Link to post
Share on other sites

Запустил пример из STM32_USB-FS-Device_Lib_V3.3.0, железо работает. Собственно нужно теперь разобраться как с помощь этой библиотеки строить USB в том виде, в каком мне нужно. Агурова читал, но как-то мало его. Есть ли еще что-то русскоязычное про USB кроме Русева? Есть ли что-то доходчивое собственно про библиотеку? Сейчас стоит задача передавать в оба конца буфер из 512 байт. Хочется чтоб без дополнительных драйверов, например HID. Спасибо.

Share this post


Link to post
Share on other sites

Кто-нибудь делал устройство USB HID с помощью STM32_USB-FS-Device_Lib_V3.3.0 с нуля? Именно с нуля, а не переделкой примера? Помогите освоить это дело. Ну или помогите в примере Custom_HID разобраться получше. Спасибо.

Share this post


Link to post
Share on other sites

Есть необходимость переместить SPI1 на другие выводы, т.е. ремапить.

Инициализирую таким образом.

 

void SPI_init(void)
{ // spi B3 SCK,B4 MISO,B5 MOSI, А15 NSS

AFIO->MAPR |= AFIO_MAPR_SPI1_REMAP;

RCC->APB2ENR |=  RCC_APB2ENR_AFIOEN; 

RCC->APB2ENR |=  RCC_APB2ENR_IOPBEN;

RCC->APB2ENR |=  RCC_APB2ENR_IOPAEN;


// SS                            
GPIOA->CRH   |=  GPIO_CRH_MODE15;    //A15
GPIOA->CRH   &= ~GPIO_CRH_CNF15;     //
GPIOA->BSRR   =  GPIO_BSRR_BS15;     //


//SCK
GPIOB->CRL   |=  GPIO_CRL_MODE3;    //B3
GPIOB->CRL   &= ~GPIO_CRL_CNF3;     //
GPIOB->CRL   |=  GPIO_CRL_CNF3_1;   //

// MISO
GPIOB->CRL   &= ~GPIO_CRL_MODE4;    //B4
GPIOB->CRL   &= ~GPIO_CRL_CNF4;     //
GPIOB->CRL   |=  GPIO_CRL_CNF4_1;   //
GPIOB->BSRR   =  GPIO_BSRR_BS4;     //

//MOSI
GPIOB->CRL   |=  GPIO_CRL_MODE5;    //B5
GPIOB->CRL   &= ~GPIO_CRL_CNF5;     //
GPIOB->CRL   |=  GPIO_CRL_CNF5_1;   //

RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; 
SPI1->CR1     = 0x0000;             //
SPI1->CR2     = 0x0000;             //
SPI1->CR1    	|=SPI_CR1_MSTR       //
    		         | SPI_CR1_BR_1         //
    		         | SPI_CR1_SSI        //
    		         | SPI_CR1_SSM        //
    		         | SPI_CR1_SPE;        //
}

Не работает. Без ремапа, на обычных ногах работает нормально. Что поправить? добавить?

Edited by IgorKossak
[codebox]!!!

Share this post


Link to post
Share on other sites
Что поправить?
А не надо ли эти две строчки местами поменять?
AFIO->MAPR |= AFIO_MAPR_SPI1_REMAP;

RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;

 

Note: To read/write the AFIO_EVCR, AFIO_MAPR, AFIO_MAPR2 and AFIO_ EXTICRX registers,

the AFIO clock should first be enabled. Refer to APB2 peripheral clock enable register (RCC_APB2ENR).

Share this post


Link to post
Share on other sites

Спасибо.

поменял. не помогло.

Нашел.

По сбросу на PB3,PB4, PA15 используются для отладки по jtag.

 

AFIO->MAPR |=AFIO_MAPR_SWJ_CFG_JTAGDISABLE;

Заработало. SPI1 перенесен на альтернативные ноги.

Edited by valera_o

Share this post


Link to post
Share on other sites

Развожу плату под stm32f100c4. Помогите правильно определиться с ногами необходимыми для программирования SWD, есть плата Дискавери.

Я так понял, что необходимы ноги SWDIO, SWDCLK, Vss, Vdd. Что делать с ногами BOOT0 и BOOT1?

Share this post


Link to post
Share on other sites
Что делать с ногами BOOT0 и BOOT1?
Зависит откуда вы хотите загружаться:)

 

Share this post


Link to post
Share on other sites
Что делать с ногами...?

 

Я бы рекомендовал вам почитать Reference manual RM0041 STM32F100xx advanced ARM-based 32-bit MCUs. Но не раздел 2.4 Boot configuration в котором есть таблица 6 в которой написано что же делать с этими ногами. И не 25.4.1 SWJ debug port pins где написано про выводы JTAG и SW, а хотя бы на раз по диагонали просмотреть весь документ. Уверен вы узнаете много нового и полезного. И знания эти помогут избежать ошибок...

 

 

ну и даташит никто не отменял...

Edited by Alfa

Share this post


Link to post
Share on other sites

Спасибо за ответы.

Нужно запрограммировать и запускать main из собственной памяти контроллера.

Сейчас открою доки, просмотрю.

Это мечта - взять и прочитать весь документ. Стоит конкретная задача, конкретная периферия, вот и читается сначала то, что необходимо.

Edited by valera_o

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this