Буфер данных Stm32f103c8

Кто любит RISC в жизни, заходим, не стесняемся.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Буфер данных Stm32f103c8

Сообщение arkhnchul »

[uquote="khch",url="/forum/viewtopic.php?p=3433815#p3433815"]SPL обсирают, типа не обслуживается больше[/uquote]
а чего там обслуживать? Периферия вся описана, функции работы с ней есть. Это ж не пользовательская софтина, где "ой, а тут внешний сервис поменял фоточки на круглые, без обновления ничего работать не будет". Начинка конкретной модели существующего в кремнии серийного контроллера изменится примерно никогда.
возможно, подразумевается, что теперь куб не генерит код с использованием SPL. Ну там произошел некоторый ребрендинг) В куб сейчас кроме HAL-а завезли LL - "Low Level library" - потроха которой почти SPL и есть. Настоятельно рекомендую использовать именно ее. Это эдакое "HAL, сделанный наконец не совсем через жопу".
Изображение
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Буфер данных Stm32f103c8

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

khch писал(а):Но откуда я мог знать, что для оперативки это много
Прежде чем начинать работать с МК нужно изучить его содержимое чтобы знать сколько и чего в нем есть. Эта информация находится на первой странице даташита.
khch писал(а):У меня нет учителя. Все самому.
Интернет есть? Доступ к поисковикам не заблокирован? Статьи в сети можете найти?
khch писал(а):SPL обсирают, типа не обслуживается больше
Куб с HAL не лучше.
SPL нормальная библиотека и для STM32F103C8T6 то что нужно.
khch писал(а):Только одному не получается выучить.
Даташит в помощь. Не первый попавшийся, а со страницы. https://www.st.com/en/microcontrollers/stm32f103c8.html
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3433832#p3433832"]Настоятельно рекомендую использовать именно ее. Это эдакое "HAL, сделанный наконец не совсем через жопу".[/uquote]


Ага, здесь вам ярчайший пример, что изучать нужно не с либ а с осознания железа.
Никакие уровни абстракции не помогут если в железе полный ноль...
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

arkhnchul

А HAL и LL library это разные библиотеки или он работают в связке?
Я пока до ЛЛ не добрался в своих нуждах.

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

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

khch, не эмоционируйте так бурно . Сие не к вам, а вот они то как раз и не понимают...

Вы лучше словами изобразите свою хотелку :

DMA, SPI - что куда выплевываем ?
Реклама
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

[uquote="dosikus",url="/forum/viewtopic.php?p=3433967#p3433967"]khch,
Вы лучше словами изобразите свою хотелку :

DMA, SPI - что куда выплевываем ?[/uquote]

Это не хотелка. Я попросил знакомых дать мне сложную задачу, которую они не могут решить. мне с этого ничего не будет. Только понимание процесса. А он (для меня) сложный.

Мне надо принять непрерывный поток данных из 512 байт и переслать их по Ethernet. Решение представлю себе так:
принимаю по 8(16) бит в SPI, собираю в массив. По ходу проверяется четность, но там же мне надо проверить контрольные байты -- они всегды известны и одинаковы. Это, наверное, в буфере.
Ну и обратно... Пытаюсь еще собрать эмулятор этого сигнала. Это просто практика.

PS Да... вот еще. внешняя синхронизация сигнала обязательно. 2,048 Мгц.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

[uquote="khch",url="/forum/viewtopic.php?p=3433971#p3433971"]Мне надо принять непрерывный поток данных из 512 байт и переслать их по Ethernet.[/uquote]

Внешний модуль типа ENC28J60 ?
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

[uquote="dosikus",url="/forum/viewtopic.php?p=3433977#p3433977"][uquote="khch",url="/forum/viewtopic.php?p=3433971#p3433971"]Мне надо принять непрерывный поток данных из 512 байт и переслать их по Ethernet.[/uquote]

Внешний модуль типа ENC28J60 ?[/uquote]

Да. Он и есть. Кстати, раз о нем речь зашла...
На нем стоит кварц 25,000, но осциллограф на выводах кварца ничего не видит. А на одном из пинов микросхемы видит что-то около 5 МГц. это нормально ?
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

dosikus

Я читал в том числе и это. Вопрос не в том, что я не уделяю достаточного времени и усилий. Вопрос в том, что я, видимо, упускаю при изучении что-то очень важное.
Вот например
включаем тактирование порта B и альтернативных функций
RCC->APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN;
это из ваших ссылолк, которые я , кстати, читал.
Я понимаю, что IOPB и AFIO сидят на APB2
Я понимаю, указателем RCC переменной в структуре RCC_TypeDef присваевается значение APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN;
Но почему это делается операцией ИЛИ. Почему не сложение?

Ну это к слову.... Решил отдохнуть от этого всего пару дней...

Добавлено after 1 minute 34 seconds:
... И кстати, что там делает AFIO, когда в структуре

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

typedef struct
{
  __IO uint32_t CR;
  __IO uint32_t CFGR;
  __IO uint32_t CIR;
  __IO uint32_t APB2RSTR;
  __IO uint32_t APB1RSTR;
  __IO uint32_t AHBENR;
  __IO uint32_t APB2ENR;
  __IO uint32_t APB1ENR;
  __IO uint32_t BDCR;
  __IO uint32_t CSR;


} RCC_TypeDef;
нет этого AFIO

Добавлено after 5 minutes 15 seconds:
мне не понятно то, что pRxBuffPtr - это буфер,куда пересылаются данные, но он не привязан к адресу. Хотя как ни читаю, везде говорят, что к адресу должно быть привязано. Тут сказали, что что контроллер сам решает куда писать. контроллер или компилятор?
И не смог найти механизм, по которому DMA переправляет данные и располагает их в выделенном массиве друг за другом....
короче масса вопросов.
А где читать (за редким приятным исключением) - так все показывают уже известные места.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Буфер данных Stm32f103c8

Сообщение Myp3ik »

AFIO это бит регистра APB2ENR
Вложения
reg.png
(47.89 КБ) 354 скачивания
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Буфер данных Stm32f103c8

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

khch писал(а):И кстати, что там делает AFIO, когда в структуре нет этого AFIO
Откройте Reference Manuals и посмотрите описание бит регистра APB2ENR.
khch писал(а):мне не понятно то, что pRxBuffPtr - это буфер,куда пересылаются данные, но он не привязан к адресу. Хотя как ни читаю, везде говорят, что к адресу должно быть привязано.
Если это вопрос про DMA, при настройке указывается адрес памяти куча читать или записывать. Это не фиксированный адрес и при повторной настройке можно указать другой.
Если речь про адрес размещения pRxBuffPtr, его выбирает компилятор.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

khch,

https://habr.com/post/337622/

https://www.youtube.com/watch?v=HwomcPSQsRE

Но похоже начинать надо вообще с азов...
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: Буфер данных Stm32f103c8

Сообщение VladislavS »

[uquote="khch",url="/forum/viewtopic.php?p=3434006#p3434006"]Но почему это делается операцией ИЛИ. Почему не сложение?[/uquote]
Берём бумажку, разрисовываем регистр побитно. Делаем сначала ИЛИ, затем "+". Сравниваем результат, много думаем...
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

VladislavS

0100 | 1000 = 1100;
0100 + 1000 = 1100;
Или я опять не прав?

Добавлено after 2 minutes 20 seconds:
[uquote="VladislavS",url="/forum/viewtopic.php?p=3434119#p3434119"][uquote="khch",url="/forum/viewtopic.php?p=3434006#p3434006"]много думаем...[/uquote]

Будьте добры, обьясните как надо и где я неправильно понимаю основы.
Спасибо.

Добавлено after 1 minute 11 seconds:
reset value - это значение после сброса или значение для сброса?
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

Re: Буфер данных Stm32f103c8

Сообщение arkhnchul »

[uquote="khch",url="/forum/viewtopic.php?p=3433962#p3433962"]А HAL и LL library это разные библиотеки или он работают в связке?[/uquote]
разные
khch писал(а):0100 | 1000 = 1100;
0100 + 1000 = 1100;
Или я опять не прав?
опять.
вот в регистре (пусть восьмибитном для примера) у вас на данный момент значение XXXXXXXX. Делаем с ним | и + этого самого 00001100:
XXXXXXXX | 00001100 = XXXX11XX. Простое битовое ИЛИ. В позициях, где у операндов стоят 1, в результате не может быть ничего иного.
XXXXXXXX + 00001100 = а хрен его знает, что там получится с арифметикой. Вообще никак.

т.е. в первом случае мы устанавливаем нужные биты в 1, во втором - вообще не можем предсказать результат.
khch писал(а):reset value - это значение после сброса или значение для сброса?
это значение для сброса
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

arkhnchul

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

Re: Буфер данных Stm32f103c8

Сообщение dosikus »

0b0011 +0b0011=0b0110
0b0011 OR 0b0011 =0b0011

Шикарные грабли ...

Во первых нули там не всегда, начальные значение есть в RM .
Последний раз редактировалось dosikus Ср авг 08, 2018 16:30:03, всего редактировалось 1 раз.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: Буфер данных Stm32f103c8

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

khch писал(а):0100 | 1000 = 1100;
0100 + 1000 = 1100;
Или я опять не прав?

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

    volatile uint8_t a, b;
    #define x (uint8_t) 0b11001100

    a=b=0xF5;
    a|=x;
    b+=x;
В a будет 253, а в b 193. Подумайте почему так.
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

Re: Буфер данных Stm32f103c8

Сообщение khch »

Мурик dosikus
Я не хочу ввязываться в академические споры, рановато мне.
Мне просто казалось, что там изначально заложено число, а операнды разработаны так, суммируется 1 и 0 всегда. Этот путь мне показался геморойным и непонятным.
Но мне обьяснили, что там может быть какое угодно число, видимо с какими-то настройками. Поэтому прибавление не подойдет. Я понял.
Приведенный вами пример с число FA практически повторяет верхний пост.

Добавлено after 6 minutes 3 seconds:
Вот смотрите

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

DMA2_Stream3->CR |=  DMA_SxCR_PSIZE_0; //1
  DMA2_Stream3->CR &= ~DMA_SxCR_PSIZE_1; //0
из https://habr.com/post/337622/

Рыщу в проекте - не могу найти. Ведь и в HAL они где-то должны быть!! Раз стандартная документация. Или я опять....?
На мой взгляд, для большинства проектов не нужны внешние библиотеки и проще использовать обращение к регистрам микроконтроллера, используя стандартную документацию.
--- О какой стандартной документации речь...? Мля как же все трудно.... Работал себе могильщиком, нормально же было....
Ответить

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