Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Вт авг 07, 2018 22:33:32

SPL обсирают, типа не обслуживается больше

а чего там обслуживать? Периферия вся описана, функции работы с ней есть. Это ж не пользовательская софтина, где "ой, а тут внешний сервис поменял фоточки на круглые, без обновления ничего работать не будет". Начинка конкретной модели существующего в кремнии серийного контроллера изменится примерно никогда.
возможно, подразумевается, что теперь куб не генерит код с использованием SPL. Ну там произошел некоторый ребрендинг) В куб сейчас кроме HAL-а завезли LL - "Low Level library" - потроха которой почти SPL и есть. Настоятельно рекомендую использовать именно ее. Это эдакое "HAL, сделанный наконец не совсем через жопу".
Изображение

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

Вт авг 07, 2018 22:49:35

khch писал(а):Но откуда я мог знать, что для оперативки это много
Прежде чем начинать работать с МК нужно изучить его содержимое чтобы знать сколько и чего в нем есть. Эта информация находится на первой странице даташита.

khch писал(а):У меня нет учителя. Все самому.
Интернет есть? Доступ к поисковикам не заблокирован? Статьи в сети можете найти?

khch писал(а):SPL обсирают, типа не обслуживается больше
Куб с HAL не лучше.
SPL нормальная библиотека и для STM32F103C8T6 то что нужно.

khch писал(а):Только одному не получается выучить.
Даташит в помощь. Не первый попавшийся, а со страницы. https://www.st.com/en/microcontrollers/stm32f103c8.html

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

Ср авг 08, 2018 09:12:20

Настоятельно рекомендую использовать именно ее. Это эдакое "HAL, сделанный наконец не совсем через жопу".



Ага, здесь вам ярчайший пример, что изучать нужно не с либ а с осознания железа.
Никакие уровни абстракции не помогут если в железе полный ноль...

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

Ср авг 08, 2018 09:23:59

arkhnchul

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

dosikus
просто поразительно как с полуслова некоторым удается обьяснить, казалось бы, сложные вещи.... Просто прирожденные учителя...
Вам не приходило в голову, что я это понимаю? или это все только вы и понимаете??

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

Ср авг 08, 2018 09:33:00

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

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

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

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

Ср авг 08, 2018 09:49:21

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

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


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

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

PS Да... вот еще. внешняя синхронизация сигнала обязательно. 2,048 Мгц.

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

Ср авг 08, 2018 10:11:41

Мне надо принять непрерывный поток данных из 512 байт и переслать их по Ethernet.


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

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

Ср авг 08, 2018 10:22:03

Мне надо принять непрерывный поток данных из 512 байт и переслать их по Ethernet.


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


Да. Он и есть. Кстати, раз о нем речь зашла...
На нем стоит кварц 25,000, но осциллограф на выводах кварца ничего не видит. А на одном из пинов микросхемы видит что-то около 5 МГц. это нормально ?

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

Ср авг 08, 2018 10:34:33

Начните читать .
Цикл статей - http://we.easyelectronics.ru/electro-an ... -seti.html

https://hubstub.ru/stm32/100-spi-stm32.html

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

Ср авг 08, 2018 11:40:54

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 переправляет данные и располагает их в выделенном массиве друг за другом....
короче масса вопросов.
А где читать (за редким приятным исключением) - так все показывают уже известные места.

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

Ср авг 08, 2018 11:42:51

AFIO это бит регистра APB2ENR
Вложения
reg.png
(47.89 KiB) Скачиваний: 339

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

Ср авг 08, 2018 11:51:12

khch писал(а):И кстати, что там делает AFIO, когда в структуре нет этого AFIO
Откройте Reference Manuals и посмотрите описание бит регистра APB2ENR.

khch писал(а):мне не понятно то, что pRxBuffPtr - это буфер,куда пересылаются данные, но он не привязан к адресу. Хотя как ни читаю, везде говорят, что к адресу должно быть привязано.
Если это вопрос про DMA, при настройке указывается адрес памяти куча читать или записывать. Это не фиксированный адрес и при повторной настройке можно указать другой.
Если речь про адрес размещения pRxBuffPtr, его выбирает компилятор.

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

Ср авг 08, 2018 12:07:15

khch,

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

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

Но похоже начинать надо вообще с азов...

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

Ср авг 08, 2018 14:39:40

Но почему это делается операцией ИЛИ. Почему не сложение?

Берём бумажку, разрисовываем регистр побитно. Делаем сначала ИЛИ, затем "+". Сравниваем результат, много думаем...

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

Ср авг 08, 2018 15:58:38

VladislavS

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

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


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

Добавлено after 1 minute 11 seconds:
reset value - это значение после сброса или значение для сброса?

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

Ср авг 08, 2018 16:08:29

А HAL и LL library это разные библиотеки или он работают в связке?

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

опять.
вот в регистре (пусть восьмибитном для примера) у вас на данный момент значение XXXXXXXX. Делаем с ним | и + этого самого 00001100:
XXXXXXXX | 00001100 = XXXX11XX. Простое битовое ИЛИ. В позициях, где у операндов стоят 1, в результате не может быть ничего иного.
XXXXXXXX + 00001100 = а хрен его знает, что там получится с арифметикой. Вообще никак.

т.е. в первом случае мы устанавливаем нужные биты в 1, во втором - вообще не можем предсказать результат.

khch писал(а):reset value - это значение после сброса или значение для сброса?

это значение для сброса

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

Ср авг 08, 2018 16:12:18

arkhnchul

То есть мы не знаем начальное значение. Мне казалось там изначально нули. Ок. Спасибо.

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

Ср авг 08, 2018 16:29:04

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

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

Во первых нули там не всегда, начальные значение есть в RM .
Последний раз редактировалось dosikus Ср авг 08, 2018 16:30:03, всего редактировалось 1 раз.

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

Ср авг 08, 2018 16:29:20

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. Подумайте почему так.

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

Ср авг 08, 2018 16:42:38

Мурик 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 они где-то должны быть!! Раз стандартная документация. Или я опять....?

На мой взгляд, для большинства проектов не нужны внешние библиотеки и проще использовать обращение к регистрам микроконтроллера, используя стандартную документацию.

--- О какой стандартной документации речь...? Мля как же все трудно.... Работал себе могильщиком, нормально же было....
Ответить