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

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

Вт авг 07, 2018 15:23:02

этот буфер вы сами выделяете в памяти и указываете его адрес в той самой структуре. и размер этого буфера тоже ваша обязанность указать.

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

Вт авг 07, 2018 18:49:04

У меня не получается осилить это. Покажите пожалуйста как это сделать.

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

Вт авг 07, 2018 18:57:03

Код:
uint8_t MyBigBuf[1024];
hspi->pRxBuffPtr = MyBigBuf;

Только буфер не на стеке, а глобальный или в куче.

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

Вт авг 07, 2018 19:46:51

khch писал(а):У меня не получается осилить это. Покажите пожалуйста как это сделать.
Может просто не ваше? :)

А если серьезно, то несмотря что вы написали
Бобры вечер, люди.
Изучаю, только начал. И мне нужна помощь (не такая типа "мля, вот нагугли, кури даташиты...", крили гуглили).
дам совет прочитать обучающие материалы по Си и и попытаться понять что в них написано.

Завязывайте курить бобров! :))) Скачайте даташит и изучите работу SPI и DMA.
На мой взгляд SPL гораздо понятнее и нагляднее при настройке DMA чем HAL.

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

Вт авг 07, 2018 20:19:29

Код:
uint8_t MyBigBuf[1024];
hspi->pRxBuffPtr = MyBigBuf;

Только буфер не на стеке, а глобальный или в куче.


Да я взял тогда массив 512 байт, но не смог достучаться до
Код:
hspi->pRxBuffPtr = MyBigBuf;

И я еще засомневался, будет ли он писать в этот массив последовательно или каждый раз в начало (нулевой элемент).
Ведь дата регистр SPI у меня 8 (16) битный. Нужно ли писать там какой-то цикл, который будет раскидывать принятые байты последовательно?

Адрес взял в SRAM. Конкретно 0x30000000. Для stm32c8t6.

PS Конечно я буду читать книги по Си и все такое.... Вы мне очень помогли. Сам бы я не додумался поискать.
PS Вас когда учили ходить, а вы падали, вам говорили "может это не твое?"

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

Вт авг 07, 2018 20:30:42

khch писал(а):Нужно ли писать там какой-то цикл, который будет раскидывать принятые байты последовательно?
скажите, только честно, сколько страниц про DMA вы прочли, прежде чем задать этот вопрос?

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

Вт авг 07, 2018 20:34:44

ARV
Это неважно. Потому что я не смог понять. Но потратил на изучение 4 дня. Может мало прочел, может не то прочел.... Какая разница, я не смог найти то, что надо, не смог уловить смысл прочитанного.... Это неважно.
Мне нужно понять как это работает. И я пойму. С вами - хорошо, будет быстро. Без вас... ну на нет и суда нет.

тоже ваша обязанность указать.
- это полностью характеризует ваше отношение ко мне/всем/неграм/азиатам/....

Но видимо и с этим придется мирится... Слушайте, честное слово, я не буду вас обременять заботами обо мне. Можете вообще никак не беспокоится. Я понимаю, что вы изучали, учились, тратили деньги и время. И теперь вы не обязаны делиться этим с кем-либо. Но и нравоучения читать тоже необязательно. Я достаточно зрелый человек, чтобы понимать когда стоит и когда не стоит обращаться за помощью.

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

Вт авг 07, 2018 20:41:50

Нужно ли писать там какой-то цикл, который будет раскидывать принятые байты последовательно?
Не нужно. DMA сам всё сделает, если правильно настроить.
Адрес взял в SRAM. Конкретно 0x30000000.

Изображение
Вложения
nelzya-prosto-tak-vzyat-i-boromir-mem_184090852_orig_.jpg
(43.75 KiB) Скачиваний: 309
Последний раз редактировалось VladislavS Вт авг 07, 2018 20:50:30, всего редактировалось 1 раз.

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

Вт авг 07, 2018 20:48:45

khch писал(а):Адрес взял в SRAM. Конкретно 0x30000000.
Что находится в STM32F103C8T6 по этому адресу?

khch писал(а):Вас когда учили ходить, а вы падали, вам говорили "может это не твое?"
Вместо того чтобы учится ходить вы начинаете очень быстро бегать. Сначала изучите основы, а потом пытайтесь их применить на практике и не торопитесь.

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

Вт авг 07, 2018 20:50:43

Да я взял тогда массив 512 байт, но не смог достучаться до

что значит "не смог достучаться"? Компилятор ругнулся на что-то? Контроллер повис? Из массива явный мусор читался? Комп загорелся при попытке?
Адрес взял в SRAM. Конкретно 0x30000000.

ЗАЧЕМ?
Для stm32c8t6

нет таких контроллеров. Для указания модели тут важна часть сразу после stm32. Предположу, что у вас распространенная платка "blue pill" с stm32f103c8t6. Вы таки в курсе, что у этого контроллера SRAM всего 20 килобайт, и кончаются ее адреса на 0x20005000? Дальше ничего нет, вплоть до начала адресов периферии.
PS Вас когда учили ходить, а вы падали, вам говорили "может это не твое?"

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

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

Вт авг 07, 2018 21:06:50

file:///C:/Users/khch/Downloads/STM-STM32-STM32F101CB-Learning%20Centre%20MCU-User%20Manuals-STMicroelectronics.Manuals_1.pdf
page 26 - Вот оттуда брал данные для размещения буфера. Неправильный мануал взял.

Добавлено after 7 minutes 40 seconds:
что значит "не смог достучаться"
- неправильно выразился. Имел ввиду "недопер". До бинарника дело не доходит. Я пока не пойму что делаю. Куда там грузить в контроллер.

у этого контроллера SRAM всего 20 килобайт
- хорошо. Я изменю размещение. Прочитаю и найду.

И обижаетесь
Я никогда не обижаюсь. Никто мне ничего не обязан. И я понимаю, что у каждого свои представления, как нужно правильно изучать. И каждый по-своему прав. И понимаю, что сюда заходят, получить дешевый (во всех смыслах и по времени тоже ) ответ на свой вопрос. Но уж на то и форум.
И я не то, чтобы не читаю.
Просто понял, что не могу ухватить какую-то очень важную вещь в этом всем. Надоело биться головой.

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

Вт авг 07, 2018 21:15:27

khch писал(а):ile:///C:/Users/khch/Downloads/STM-STM32-STM32F101CB-Learning%20Centre%20MCU-User%20Manuals-STMicroelectronics.Manuals_1.pdfpage 26 - Вот оттуда брал данные для размещения буфера.
И там есть упоминание про ОЗУ по адресу 0x30000000? Можно скриншот упомянутой 26 страницы этого документа? :)

khch писал(а):До бинарника дело не доходит.
Как компилировать программу разобрались? В какой среде работаете?

khch писал(а):Куда там грузить в контроллер.
Во флеш. :)

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

Вт авг 07, 2018 21:19:55

Я изменю размещение

еще раз повторю вопрос: на кой хрен вам руками что-то по абсолютным адресам размещать? Объявите глобальную переменную-массив, и все, линкер сам разберется, куда его девать.
Просто понял, что не могу ухватить какую-то очень важную вещь в этом всем. Надоело биться головой.

патамушта бьетесь не в ту стену. Сначала надо понимать вот это - https://rsdn.org/article/cpp/ObjectsAndPointers.xml - а потом уже пытаться использовать.

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

Вт авг 07, 2018 21:31:28

И там есть упоминание про ОЗУ по адресу 0x30000000? Можно скриншот упомянутой 26 страницы этого документа?
-- у меня не получается отправить изображение. Разбираться сейчас не хочу с этим. Да, в этом мануале 0x20000000 -- 0x3FFFFFFF отведено под оперативку. Таблица называется Behavior of memory accesses.
Как компилировать программу разобрались? В какой среде работаете?

Да с этим проблем нет, Кейл 5. St-link моргание диодом, PWM, даже 2004 дисплей подключил, но это уже с готовой программой -- не разбирался что там (а зря).
Дебагом пользоваться пока не умею только.

Во флеш естественно. :) Хотя можно и в ОЗУ.
- я не в этом смысле. Я имел ввиду, что я пока не могу программу написать так, чтоб понятно было - что там грузить?? Кого обманывать.

Мне еще надо механизм чтения набрать. Вот теперь этим и занят.

Добавлено after 8 minutes 5 seconds:
arkhnchul
Понимаете, я вот уже несколько месяцев учу этот Си++. Задачки по учебнику решаю нормально, понимаю довольно трудные вещи. В стерильной среде учебника.
В какой-то момент понял, что чего-то не понимаю. Масштабы непонимания были с ужасом осознаны, когда попросил одного знакомого дать мне реальную проблему. Я понял, что я ничего не понимаю в программировании. И вот я тут.
Но оставлять не буду. Пох....

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

Вт авг 07, 2018 21:48:34

khch писал(а):у меня не получается отправить изображение. Разбираться сейчас не хочу с этим. Да, в этом мануале 0x20000000 -- 0x3FFFFFFF отведено под оперативку. Таблица называется Behavior of memory accesses.
Из этих данных следует что в МК 0.5 ГБ оперативки, но это не так. В STM32F103C8T6 20 КБ ОЗУ.
Нужно смотреть даташит на нужный контроллер, а не первый попавшийся.
Скачайте документацию на официальном сайте. https://www.st.com/en/microcontrollers/stm32f103c8.html
Нужны Datasheet и Reference Manuals.

khch писал(а):я вот уже несколько месяцев учу этот Си++.
Для МК достаточно Си. На плюсах писать можно, но не обязательно.

khch писал(а):Задачки по учебнику решаю нормально, понимаю довольно трудные вещи.
Для начала напишите простые программы, уже упомянутые мигание светодиодом (в цикле, по таймеру, через DMA). Только лучше на этом этапе кубом не пользоваться. Программа должна быть на регистрах, или в крайнем случае SPL.

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

Вт авг 07, 2018 21:55:56

в этом мануале 0x20000000 -- 0x3FFFFFFF отведено под оперативку

это адресное пространство. Например, у вас на компьютере с архитектурой amd64 под адреса виртуальной памяти отведено 48 бит, это возможность адресации 256 терабайт. Я вот более чем уверен, что столько там просто физически нет, даже если отрядить все дисковое пространство под своп)

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

Вт авг 07, 2018 21:56:56

khch, притормозите немного. Отступите назад на мигание светодиодом, запустите отладчик, посмотрите как программа устроена. Где вектора прерываний, данные, программа, стек и порты ввода-вывода. Как это всё связано. Без понимания основ вся мощь С++ будет бесполезна. А SPI, DMA, таймеры это всё придёт с опытом.

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

Вт авг 07, 2018 22:01:57

Нужно смотреть даташит на нужный контроллер, а не первый попавшийся.
- надо признать, что таки да.... Лоханулся. Оправданий мне нет. Но откуда я мог знать, что для оперативки это много...

Для начала напишите простые программы, уже упомянутые мигание светодиодом (в цикле, по таймеру, через DMA). Только лучше на этом этапе кубом не пользоваться. Программа должна быть на регистрах, или в крайнем случае SPL.


Легко сказать. У меня нет учителя. Все самому. Пытаюсь осилить CMSIS - не могу. А SPL обсирают, типа не обслуживается больше...

притормозите немного. Отступите назад на мигание светодиодом, запустите отладчик, посмотрите как программа устроена. Где вектора прерываний, данные, программа, стек и порты ввода-вывода. Как это всё связано. Без понимания основ вся мощь С++ будет бесполезна. А SPI, DMA, таймеры это всё придёт с опытом.

--- Исключено. Я топчусь на месте уже месяц с этими миганиями. Только вперед.

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

Вт авг 07, 2018 22:10:40

Какой нах вперёд, если вы объём памяти контроллера на адресное пространство наложить не можете. Я бы вообще отправил на асме диодом мигать для просветления, но у ARM он негуманный...

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

Вт авг 07, 2018 22:27:03

Какой нах вперёд, если вы объём памяти контроллера на адресное пространство наложить не можете. Я бы вообще отправил на асме диодом мигать для просветления, но у ARM он негуманный...


У вас все???

Добавлено after 15 minutes 8 seconds:
Я бы вообще отправил на асме диодом мигать для просветления


С удовольствием. Только одному не получается выучить.
Ответить