Буфер данных Stm32f103c8
Re: Буфер данных Stm32f103c8
То есть все еще хуже.
Загуглите - Битовые операции
Да и читайте одновременно RM.
И еще - не всегда запись единицы в бит регистра устанавливает сей бит...
Загуглите - Битовые операции
Да и читайте одновременно RM.
И еще - не всегда запись единицы в бит регистра устанавливает сей бит...
- Реклама
Re: Буфер данных Stm32f103c8
dosikus
Послушайте, я прошу в последний раз (наверное
Я понимаю что такое &, = , ~, ^ даже различаю порой среди всего этого английские цифры и буквы. Изредка они в мозгу складываются в слова.
Но я не понимаю где вот это
определено... В RM нет таких понятий. Да есть там эти 8и 9 биты регистра контроля.
Но где это у меня в проекте? Ведь, как я понимаю, это CMSIS?? Или..... опять!!!
Послушайте, я прошу в последний раз (наверное
Я понимаю что такое &, = , ~, ^ даже различаю порой среди всего этого английские цифры и буквы. Изредка они в мозгу складываются в слова.
Но я не понимаю где вот это
DMA_SxCR_PSIZE_0
DMA_SxCR_PSIZE_1
определено... В RM нет таких понятий. Да есть там эти 8и 9 биты регистра контроля.
Но где это у меня в проекте? Ведь, как я понимаю, это CMSIS?? Или..... опять!!!
Re: Буфер данных Stm32f103c8
[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
нигде. Это CMSIS, но для другого контроллера - stm32f746
у вас это DMA_CCR_PSIZE_0 и DMA_CCR_PSIZE_1 в CMSIS, а так же DMA_PDATAALIGN_HALFWORD и DMA_PDATAALIGN_WORD в HAL
Re: Буфер данных Stm32f103c8
Эти константы определяющие биты прописаны в хэдере .
Типа stm32Fxxx.h , хэдер с определением регистров и их бит по стандарту CMSIS
Типа stm32Fxxx.h , хэдер с определением регистров и их бит по стандарту CMSIS
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Буфер данных Stm32f103c8
В нормальных IDE можно на чём угодно вызвать в контекстном меню Go to declaration.
- Реклама
Re: Буфер данных Stm32f103c8
VladislavS
Кейл 5. Не вызывается
Кейл 5. Не вызывается
Re: Буфер данных Stm32f103c8
Значит кейл ненормальная IDE.
VladislavS прав.

VladislavS прав.
- Вложения
-
- menu.png
- (28.77 КБ) 669 скачиваний
Re: Буфер данных Stm32f103c8
там просто нет этого макроса нигде. Говорю ж - та хабровская статья про другой контроллер.
Re: Буфер данных Stm32f103c8
arkhnchul
тот макрос, который в ыкинули мне после, для F103 тоже не вызвывается
Добавлено after 50 seconds:
То есть не то, чтобы не вызывается. Не находится просто в проекте.
Добавлено after 4 minutes 36 seconds:
Нашел. Он оказывается на ищет во всем проекте. Только в текущем файле. Ж)
тот макрос, который в ыкинули мне после, для F103 тоже не вызвывается
Добавлено after 50 seconds:
То есть не то, чтобы не вызывается. Не находится просто в проекте.
Добавлено after 4 minutes 36 seconds:
Нашел. Он оказывается на ищет во всем проекте. Только в текущем файле. Ж)
Re: Буфер данных Stm32f103c8
[uquote="khch",url="/forum/viewtopic.php?p=3434227#p3434227"]VladislavS
Кейл 5. Не вызывается[/uquote]
После успешной компиляции...
Кейл 5. Не вызывается[/uquote]
После успешной компиляции...
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Буфер данных Stm32f103c8
А ещё в нормальных IDE есть команда Find in files...
Re: Буфер данных Stm32f103c8
все прочитал, все выучил... Загрузил для 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 раскидывает по выделенному массиву мои данные...
Ладно, с утра продолжу.
Дошел до
//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 раскидывает по выделенному массиву мои данные...
Ладно, с утра продолжу.
Re: Буфер данных Stm32f103c8
Еще надо
DMA_CCR1_DIR - направление из периферии в память.
DMA_CCR1_MINC - инкремент памяти (указателя) после каждого трансфера (по умолчанию на 1 байт, управляется битами DMA_CCR1_MSIZE). Эти биты и отвечают за то как "раскидывать" данные в память
Это если для 103 контроллера. Для F4 названия будут отличаться, но смысл тот же.
Код: Выделить всё
DMA2_Stream3->CCR = (uint32_t)(DMA_CCR1_DIR | DMA_CCR1_CIRC | DMA_CCR1_MINC);
DMA_CCR1_MINC - инкремент памяти (указателя) после каждого трансфера (по умолчанию на 1 байт, управляется битами DMA_CCR1_MSIZE). Эти биты и отвечают за то как "раскидывать" данные в память
Это если для 103 контроллера. Для F4 названия будут отличаться, но смысл тот же.
Иван Сусанин - первый полупроводник 
Re: Буфер данных Stm32f103c8
[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:
то есть в зависимости от размера DMA_CCR1_MSIZE он инкрементируется на 8,16,32 бита, пока в DMA channel x number of data register ?? заданый размер от 0 до 65535 не декрементируется до нуля. Так?
Но тогда ведь должен быть еще один счетчик, который будет считать номер элемента массива, который я задал, считать адрес.... Это уже не может быть аппаратно. Как это реализовано?
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3434368#p3434368"]DMA_CCR1_MINC - инкремент памяти (указателя) после каждого трансфера (по умолчанию на 1 байт, управляется битами DMA_CCR1_MSIZE). Эти биты и отвечают за то как "раскидывать" данные в память[/uquote] - а вот тут хотелось бы понять смысл происходящего.
Из RM0008:
Насколько я понял, он завязан также на DMA channel x number of data register ??MINC: Memory increment mode
This bit is set and cleared by software.
0: Memory increment mode disabled
1: Memory increment mode enabled
то есть в зависимости от размера DMA_CCR1_MSIZE он инкрементируется на 8,16,32 бита, пока в DMA channel x number of data register ?? заданый размер от 0 до 65535 не декрементируется до нуля. Так?
Но тогда ведь должен быть еще один счетчик, который будет считать номер элемента массива, который я задал, считать адрес.... Это уже не может быть аппаратно. Как это реализовано?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Буфер данных Stm32f103c8
[uquote="khch",url="/forum/viewtopic.php?p=3434425#p3434425"]Это уже не может быть аппаратно. Как это реализовано?[/uquote]
Может. Аппаратно.
Может. Аппаратно.
Re: Буфер данных Stm32f103c8
[uquote="VladislavS",url="/forum/viewtopic.php?p=3434431#p3434431"][uquote="khch",url="/forum/viewtopic.php?p=3434425#p3434425"]
Может. Аппаратно.[/uquote]
А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?
Может. Аппаратно.[/uquote]
А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Буфер данных Stm32f103c8
Вы задаёте адрес в памяти. Что, по вашему мнению, по этому адресу лежит ему сугубо фиолетово.
Re: Буфер данных Stm32f103c8
Да... ответил на отбь....сь. И на том спасибо ...
Однако вынужден признать, общение с вами, выглядящее в практическом аспекте совершенно бессмысленным, таки приносит свои плоды.
Честно говоря, когда я регистрировался, не ожидал, что хотя бы один человек будет общаться нормально.
А тут их целых двое
Однако вынужден признать, общение с вами, выглядящее в практическом аспекте совершенно бессмысленным, таки приносит свои плоды.
Честно говоря, когда я регистрировался, не ожидал, что хотя бы один человек будет общаться нормально.
А тут их целых двое
Re: Буфер данных Stm32f103c8
khch, сперва определитесь с камнем, пока не запутались . То у вас F1 то F4.
[uquote="khch",url="/forum/viewtopic.php?p=3434433#p3434433"]А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?[/uquote]
Возможно имелось ввиду не "перечисление или структуру!" а массив структур.
Контроллеру DMA естественно фиолетово на то как определен вами участок памяти.
Вы задаете ему начальный адрес этого участка
с каким шагом ему шагать по памяти
и сколько шагов делать
[uquote="khch",url="/forum/viewtopic.php?p=3434433#p3434433"]А если я задам не массив для буфера а перечисление или структуру!
Как он тогда догадается?[/uquote]
Возможно имелось ввиду не "перечисление или структуру!" а массив структур.
Контроллеру DMA естественно фиолетово на то как определен вами участок памяти.
Вы задаете ему начальный адрес этого участка
с каким шагом ему шагать по памяти
и сколько шагов делать
Последний раз редактировалось dosikus Чт авг 09, 2018 07:58:19, всего редактировалось 1 раз.
Re: Буфер данных Stm32f103c8
у меня 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?
Или когда я создам сей буфер, покажу на него указателем, который уже определен проектом и, если будет несовпадение - кейл ткнет меня носом???
F4 был в ссылке, которую мне дали изучить. Чтоб не путаться я скачал все для него и создал проект - смотреть в нем все это дело.
Добавлено after 4 minutes:
[uquote="dosikus",url="/forum/viewtopic.php?p=3434441#p3434441"]khch,
Вы задаете ему начальный адрес этого массива
с каким шагом ему шагать по памяти
и сколько шагов делать[/uquote]
ага...
То есть, если я укажу буфером массив типа uint8_t , а в регистрах настрою на работу с 32 битами, то он и писать туда будет все равно по 32?
Или когда я создам сей буфер, покажу на него указателем, который уже определен проектом и, если будет несовпадение - кейл ткнет меня носом???


