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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

То есть все еще хуже.
Загуглите - Битовые операции

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

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

Сообщение khch »

dosikus

Послушайте, я прошу в последний раз (наверное :))
Я понимаю что такое &, = , ~, ^ даже различаю порой среди всего этого английские цифры и буквы. Изредка они в мозгу складываются в слова.
Но я не понимаю где вот это
DMA_SxCR_PSIZE_0
DMA_SxCR_PSIZE_1

определено... В RM нет таких понятий. Да есть там эти 8и 9 биты регистра контроля.
Но где это у меня в проекте? Ведь, как я понимаю, это CMSIS?? Или..... опять!!!
Реклама
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="khch",url="/forum/viewtopic.php?p=3434184#p3434184"]Но где это у меня в проекте? Ведь, как я понимаю, это CMSIS??[/uquote]
нигде. Это CMSIS, но для другого контроллера - stm32f746

у вас это DMA_CCR_PSIZE_0 и DMA_CCR_PSIZE_1 в CMSIS, а так же DMA_PDATAALIGN_HALFWORD и DMA_PDATAALIGN_WORD в HAL
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Эти константы определяющие биты прописаны в хэдере .
Типа stm32Fxxx.h , хэдер с определением регистров и их бит по стандарту CMSIS
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

В нормальных IDE можно на чём угодно вызвать в контекстном меню Go to declaration.
Реклама
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

VladislavS
Кейл 5. Не вызывается
Реклама
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

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

Значит кейл ненормальная IDE. :)))

VladislavS прав. :)

Изображение
Вложения
menu.png
(28.77 КБ) 669 скачиваний
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

там просто нет этого макроса нигде. Говорю ж - та хабровская статья про другой контроллер.
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

arkhnchul
тот макрос, который в ыкинули мне после, для F103 тоже не вызвывается

Добавлено after 50 seconds:
То есть не то, чтобы не вызывается. Не находится просто в проекте.

Добавлено after 4 minutes 36 seconds:
Нашел. Он оказывается на ищет во всем проекте. Только в текущем файле. Ж)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

[uquote="khch",url="/forum/viewtopic.php?p=3434227#p3434227"]VladislavS
Кейл 5. Не вызывается[/uquote]

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

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

Сообщение VladislavS »

А ещё в нормальных IDE есть команда Find in files...
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

все прочитал, все выучил... Загрузил для Cube и Keil все моменты по 476 контроллеру, чтоб наверняка :)
Дошел до
//Bits 15:0 NDT[15:0]: Number of data items to transfer
//1000 point x 4 channel
DMA2_Stream3-> NDTR = 4000;

//Bits 31:0 PAR[31:0]: Peripheral address
DMA2_Stream3->PAR = (uint32_t) &(ADC2->DR);

//Bits 31:0 M0A[31:0]: Memory 0 address
DMA2_Stream3->M0AR = (uint32_t) ADC2_array;

//Bits 0 EN: Stream enable / flag stream ready when read low
DMA2_Stream3->CR |= DMA_SxCR_EN;

NVIC_EnableIRQ (DMA2_Stream0_IRQn);

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

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

Сообщение Myp3ik »

Еще надо

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

DMA2_Stream3->CCR = (uint32_t)(DMA_CCR1_DIR | DMA_CCR1_CIRC | DMA_CCR1_MINC);
DMA_CCR1_DIR - направление из периферии в память.
DMA_CCR1_MINC - инкремент памяти (указателя) после каждого трансфера (по умолчанию на 1 байт, управляется битами DMA_CCR1_MSIZE). Эти биты и отвечают за то как "раскидывать" данные в память

Это если для 103 контроллера. Для F4 названия будут отличаться, но смысл тот же.
Иван Сусанин - первый полупроводник :solder:
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3434368#p3434368"][uquote="Myp3ik",url="/forum/viewtopic.php?p=3434368#p3434368"]DMA_CCR1_DIR - направление из периферии в память.[/uquote] с этим проблем нет. Очевидных. Пока.
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3434368#p3434368"]DMA_CCR1_MINC - инкремент памяти (указателя) после каждого трансфера (по умолчанию на 1 байт, управляется битами DMA_CCR1_MSIZE). Эти биты и отвечают за то как "раскидывать" данные в память[/uquote] - а вот тут хотелось бы понять смысл происходящего.

Из RM0008:
MINC: Memory increment mode
This bit is set and cleared by software.
0: Memory increment mode disabled
1: Memory increment mode enabled
Насколько я понял, он завязан также на DMA channel x number of data register ??
то есть в зависимости от размера DMA_CCR1_MSIZE он инкрементируется на 8,16,32 бита, пока в DMA channel x number of data register ?? заданый размер от 0 до 65535 не декрементируется до нуля. Так?
Но тогда ведь должен быть еще один счетчик, который будет считать номер элемента массива, который я задал, считать адрес.... Это уже не может быть аппаратно. Как это реализовано?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

[uquote="khch",url="/forum/viewtopic.php?p=3434425#p3434425"]Это уже не может быть аппаратно. Как это реализовано?[/uquote]
Может. Аппаратно.
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3434431#p3434431"][uquote="khch",url="/forum/viewtopic.php?p=3434425#p3434425"]
Может. Аппаратно.[/uquote]
А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

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

Сообщение VladislavS »

Вы задаёте адрес в памяти. Что, по вашему мнению, по этому адресу лежит ему сугубо фиолетово.
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

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

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

Сообщение dosikus »

khch, сперва определитесь с камнем, пока не запутались . То у вас F1 то F4.


[uquote="khch",url="/forum/viewtopic.php?p=3434433#p3434433"]А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?[/uquote]


Возможно имелось ввиду не "перечисление или структуру!" а массив структур.
Контроллеру DMA естественно фиолетово на то как определен вами участок памяти.
Вы задаете ему начальный адрес этого участка
с каким шагом ему шагать по памяти
и сколько шагов делать
Последний раз редактировалось dosikus Чт авг 09, 2018 07:58:19, всего редактировалось 1 раз.
khch
Встал на лапы
Сообщения: 83
Зарегистрирован: Ср июл 18, 2018 11:51:59

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

Сообщение khch »

у меня stm32f103c8t6. board stm32_smart v2.0
F4 был в ссылке, которую мне дали изучить. Чтоб не путаться я скачал все для него и создал проект - смотреть в нем все это дело.

Добавлено after 4 minutes:
[uquote="dosikus",url="/forum/viewtopic.php?p=3434441#p3434441"]khch,
Вы задаете ему начальный адрес этого массива
с каким шагом ему шагать по памяти
и сколько шагов делать[/uquote]
ага...
То есть, если я укажу буфером массив типа uint8_t , а в регистрах настрою на работу с 32 битами, то он и писать туда будет все равно по 32?
Или когда я создам сей буфер, покажу на него указателем, который уже определен проектом и, если будет несовпадение - кейл ткнет меня носом???
Ответить

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