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

Кто любит RISC в жизни, заходим, не стесняемся.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Подскажите в SPI в режиме DMA можно как-нибудь дрыгать ногой СS ? Мне надо выставлять CS через 4 байта так что аппаратный NSS не подходит.
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Возник ещё один вопрос по поводу компилятора
у меня есть вот такая функция

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

void Received_UDP(void){
unsigned char temp1;
//int Sn_RX_RSR;
unsigned char temp=0;
        //Sn_RX_RSR0(0)= адрес 426
       temp=CHIP_READ(0x0426);
       temp1=CHIP_READ(0x0427);
       //Sn_RX_RSR|=temp|temp1;

       if (temp1 != 0x0000){

        // Sn_RX_RSR=0x80|0x03;
         temp=CHIP_READ(0x0426);
       temp1=CHIP_READ(0x0427);
       }
}
где CHIP_READ
Спойлер

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

unsigned char CHIP_READ(int addr)
{
uint8_t temp=0;
//int dwt_timestamp;

GPIO_ResetBits(GPIOB, GPIO_Pin_12);

//Delay(1);  //около 64000 тактов



while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);

SPI_I2S_SendData (SPI2,0x0f);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
temp=SPI_I2S_ReceiveData(SPI2);



while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData (SPI2,((addr & 0xFF00) >> 8));
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
temp=SPI_I2S_ReceiveData(SPI2);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData (SPI2,(addr & 0x00FF));
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
temp=SPI_I2S_ReceiveData(SPI2);

while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
SPI_I2S_SendData (SPI2,0xff);
while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
//Delay(1);
//dwt_timestamp123 = DWT_CYCCNT;
temp=SPI_I2S_ReceiveData(SPI2);
//Delay(1);
GPIO_SetBits(GPIOB, GPIO_Pin_12);
//dwt_timestamp123 = DWT_CYCCNT - dwt_timestamp123;    //готово! результат в CPU-"тиках"
return temp;
}

Какого фига компилятор ругается на переменную temp что она не где не используется ??
Реклама
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

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

Сообщение The_D »

Но ведь она и правда нигде не используется. Ты просто присвоил ей значение и все. Судя по всему ты мог ничего в нее и не сохранять если дальше это значение никуда не идет.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

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

Сообщение ploop »

На счёт использования уже ответили.
Если нужно просто вызвать CHIP_READ, а возвращаемое значение не нужно, то вызывайте и всё, без лишних переменных.
Реклама
Эиком - электронные компоненты и радиодетали
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Благодарю были такие мысли, но куда-то быстро исчезли.
А по поводу DMA? для считывания регистров понятно он не подходит но вот если надо записать массив или считать массив данных.
к примеру вот эту функцию реализовать можно ? (раньше фигово работало убрал задержки всё летать стало =))
но всё равно интересно подходит ли DMA в этом случае или нет.
Спойлер

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

void wiz_read_buf(volatile unsigned int addr, volatile unsigned char* buf,int len)
{
  int idx = 0;
  for (idx=0; idx<len; idx++)
  {
    GPIO_ResetBits(GPIOB, GPIO_Pin_12);
    //Delay(1);
    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData (SPI2,0x0f);
    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
    SPI_I2S_ReceiveData(SPI2);

    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData (SPI2,(((addr+idx) & 0xFF00) >> 8));
    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
    SPI_I2S_ReceiveData(SPI2);

    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData (SPI2,((addr+idx) & 0x00FF));
    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);
    SPI_I2S_ReceiveData(SPI2);

    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
    SPI_I2S_SendData (SPI2,0xff);
    while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_RXNE) == RESET);

    buf[idx]=SPI_I2S_ReceiveData(SPI2);
    //Delay(1);
    GPIO_SetBits(GPIOB, GPIO_Pin_12);
  }
}
Реклама
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

для считывания регистров понятно он не подходит
Не то, что подходит, он для этого и предназначен :)))
И передачу через SPI можно сделать через DMA. Посмотрите в библиотеке к Вашему МК, там должны быть примеры.
Иван Сусанин - первый полупроводник :solder:
Реклама
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

Не то, что подходит, он для этого и предназначен :)))
Эм как :shock: ? Смысл использовать DMA есть надо всего 1 значений получить/записать?
пока настроил его отправил 1 байт уже всё. Так и обычными командами примерно тоже самое получится
Или я чего-то не догоняю.

я думал его надо использовать когда кучу данных надо передать к примеру 1000 значений записать настроил указало откуда куда и всё пока это всё передаётся туда процессор свободен
Darth Cuauhtemoc
Говорящий с текстолитом
Сообщения: 1699
Зарегистрирован: Вс июн 16, 2013 18:41:45

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

Сообщение Darth Cuauhtemoc »

Да, для одного байта DMA использовать смысла нет.
У кошки четыре ноги - вход, выход, земля и питание. Но трогать ее не моги - получится замыкание.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

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

Сообщение Myp3ik »

pokk, я когда раскурил работу DMA, то хоть 1 байт, хоть 10000, всё через DMA :solder:

Что значит "пока настроил его" ? Один раз настроили необходимый канал, а дальше только вкл/выкл, размер посылки указать, обработать событие, например завершения передачи.
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

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

Сообщение drakon »

добрый день! как в Keil делать ассемблерные вставки?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

drakon писал(а):добрый день! как в Keil делать ассемблерные вставки?
Боже упаси от подобного. Надо AVR выкрутасы забывать уже ...
uk8amk
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

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

Сообщение uk8amk »

2 drakon
Из встроенной справки:
Inline assembler
The __asm keyword can be used to incorporate inline assembly into a function. For example:

int qadd(int i, int j)
{
int res;
__asm
{
QADD res, i, j
}
return res;
}
See Compiler support for inline assembly language in Using the Compiler for more information.
Для практического примера поковыряйте стартапы. Ну и ещё DSP библиотеки от STM посмотрите. Там этого много.

2 dosikus
Ну мало ли. Вдруг человеку припёрло написать цифровой фильтр или посчитать БПФ.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

uk8amk писал(а): Ну и ещё DSP библиотеки от STM посмотрите. Там этого много.
DSP либы не STM, внимательней надо быть .
uk8amk писал(а): Ну мало ли. Вдруг человеку припёрло написать цифровой фильтр или посчитать БПФ.
Ты сам ответил на свой вопрос см. DSP либы...
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

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

Сообщение sa-ta »

а такую поделку никто не пробовал ?

http://www.ebay.com/itm/ST-Link-V2-stli ... 565a977e87

Mini ST-LINK/V2,Fully compatible with the official functions,support for automatic upgrades.Support all series of STM32 and STM8.

Functions and features:
1. Support all STM32 series SWD interface debug.
2. Support all STM8 series debug.
3. Support development environment:
1>.ST-LINK Utility 2.0 and the version latest than it.
2>.STVD 4.2.1 and the version latest than it.
3>.STVP 3.2.3 and the version latest than it.
4>.IAR EWARM V6.20 and the version latest than it.
5>.IAR EWSTM8 V1.30 and the version latest than it.
6>.KEIL RVMDK V4.21 and the version latest than it.
4. Support firmware upgrade automatically


интересно, с кокосом сдружить ее возможно?
Аватара пользователя
drakon
Грызет канифоль
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

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

Сообщение drakon »

добрый день! есть у меня процедура которая записывает несколько байтов во флешь память. когда вызываю ее программно, все записывается, а когда вызывается из обработчика прерывания , не записывается. знаю что есть два режима работы. кто-то сталкивался с таким?
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

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

Сообщение The_D »

sa-ta писал(а):а такую поделку никто не пробовал ?

http://www.ebay.com/itm/ST-Link-V2-stli ... 565a977e87


интересно, с кокосом сдружить ее возможно?
Нет, но судя по описанию с Кокосом она дружить будет. Вопрос только как долго, тут несколько страниц назад уже разбирали глюки работы одной из китайских поделок.
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение coredumped »

drakon писал(а): есть у меня процедура которая записывает несколько байтов во флешь память. когда вызываю ее программно, все записывается, а когда вызывается из обработчика прерывания , не записывается. знаю что есть два режима работы.
1. Какаой контроллер?
2. Код процедуры покажите.
3. О каких 2-х режимах Вы говорите? Я такого не слышал :dont_know:
Все будет только лучше, в крайнем случае - хуже.
pokk
Вымогатель припоя
Сообщения: 574
Зарегистрирован: Вт ноя 02, 2010 17:46:37

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

Сообщение pokk »

drakon, можешь показать процедуру ?

Я тут только что начал разбираться во flash памяти вопросы возникли.
В stm32f4 что бы записать 1 байт надо весь сектор что ли стереть ???
Или сектор ещё на странницы делится ? правда этого не видать в reference_manual RM0090

http://www.st.com/web/en/resource/techn ... =auto,0,36
Аватара пользователя
coredumped
Опытный кот
Сообщения: 838
Зарегистрирован: Вт апр 12, 2011 18:38:19
Откуда: с Земли

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

Сообщение coredumped »

pokk писал(а): В stm32f4 что бы записать 1 байт надо весь сектор что ли стереть ???
Да, нужно стирать весь сектор. Для хранения настроек, я обычно использую внешнюю EEPROM, типа 24Cxx, чтоб не пилить постоянно внутреннюю flash.
PS: Если у Вас стоит батарейка, для питания RTC итп, то можете воспользоваться 4 килобайтами Backup SRAM для хранения всяческих параметров.
Все будет только лучше, в крайнем случае - хуже.
IRF840
Нашел транзистор. Понюхал.
Сообщения: 190
Зарегистрирован: Пн сен 25, 2006 17:47:10

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

Сообщение IRF840 »

Хочу спросить уважаемых специалистов вот о чем - имеется ,hex для STM32F100C8. Можно ли его залить в STM32F100RBT6B и будут ли совпадать после этого одноименные пины? То есть - залить .hex и выбрать из 64 нужные 48?
Не пинайте, это как раз вопрос новичка.
Спасибо.
Ответить

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