Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 16.01.2017, 11:02  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

AR_Favorit, он очень даже не того, активно развивается и пулл-риквесты принимает. Просто разрабы API категорически сменили и я решил послать их в одно место.
И если в F1/F4 без сторонних библиотек сложно обойтись, то в F0, думаю, дня за 3-4 я свое окружение наваяю. Так как gcc оптимизирует нормально (в отличие от sdcc), можно оставить ST'шные объявления регистров (через структуры), это еще и плюсом будет с точки зрения использования кода из ST'шных сниппетов.

Правда, не знаю еще, как USB буду прикручивать. Ну да ладно, поживем — увидим.
Реклама:
__________________
Смерть бандеровской мразоте!
eddy вне форума  
Непрочитано 18.01.2017, 09:07  
elesy
Прописка
 
Регистрация: 14.09.2009
Адрес: Екатеринбург
Сообщений: 116
Сказал спасибо: 14
Сказали Спасибо 31 раз(а) в 15 сообщении(ях)
elesy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Доброго всем дня.
Возник вопрос по работе АЦП с ДМА на STM32L151C6

Вот так инициализирую АЦП.

Код:
ADC_InitTypeDef  ADC_InitStructure;
    DMA_InitTypeDef  DMA_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    
    /* GPIOA Periph clock enable                                             */
    RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_GPIOA, ENABLE );
    /* Configure PA.01 (ADC Channel_1) in analog mode                        */
    GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
    GPIO_Init ( GPIOA, &GPIO_InitStructure );
    
    /* Enable DMA1 clock */
    RCC_AHBPeriphClockCmd ( RCC_AHBPeriph_DMA1, ENABLE );
    
    /* DMA1 channel1 configuration */
    DMA_DeInit ( DMA1_Channel1 );
    DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_ADDRESS;
    DMA_InitStructure.DMA_MemoryBaseAddr     = (uint32_t)&TrLine.ucADC_Value;
    //DMA_InitStructure.DMA_MemoryBaseAddr     = (uint32_t)&ADC_ConvertedValue;
    DMA_InitStructure.DMA_DIR                = DMA_DIR_PeripheralSRC;
    DMA_InitStructure.DMA_BufferSize         = 1;
    DMA_InitStructure.DMA_PeripheralInc      = DMA_PeripheralInc_Disable;
    DMA_InitStructure.DMA_MemoryInc          = DMA_MemoryInc_Disable;
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
    DMA_InitStructure.DMA_MemoryDataSize     = DMA_MemoryDataSize_HalfWord;
    DMA_InitStructure.DMA_Mode               = DMA_Mode_Circular;
    DMA_InitStructure.DMA_Priority           = DMA_Priority_High;
    DMA_InitStructure.DMA_M2M                = DMA_M2M_Disable;
    DMA_Init ( DMA1_Channel1, &DMA_InitStructure );
  
    /* Enable DMA1 channel1                                                  */
    DMA_Cmd ( DMA1_Channel1, ENABLE );
    
    /* Enable ADC1 clock */
    RCC_APB2PeriphClockCmd ( RCC_APB2Periph_ADC1, ENABLE );
    /* ADC1 configuration                                                    */
    ADC_InitStructure.ADC_ScanConvMode         = ENABLE;
    ADC_InitStructure.ADC_ContinuousConvMode   = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ADC_InitStructure.ADC_DataAlign            = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfConversion      = 1;
    ADC_Init ( ADC1, &ADC_InitStructure );
 
    /* ADC1 regular channel1 configuration                                  */ 
    ADC_RegularChannelConfig ( ADC1, ADC_Channel_1, 1,    ADC_SampleTime_4Cycles ); 
    
    /* Enable the request after last transfer for DMA Circular mode          */
    ADC_DMARequestAfterLastTransferCmd ( ADC1, ENABLE );
  
    /* Enable ADC1 DMA                                                       */
    ADC_DMACmd ( ADC1, ENABLE );
  
    /* Enable ADC1 */
    ADC_Cmd ( ADC1, ENABLE );
  
    ADC_SoftwareStartConv ( ADC1 );
Но в переменой значение обновляется один раз.
Где собака зарыта уже не знаю.
Может кто сталкивался с подобным?

Последний раз редактировалось elesy; 18.01.2017 в 09:15.
elesy вне форума  
Непрочитано 21.01.2017, 23:34  
nerozero
Вид на жительство
 
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
nerozero на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Добра всем,

STM32 SPI DMA (STM в роли мастера, работает только на отсылание).

Как правильно поднять ChipSelect (CS) пин по окончании транзакции? Прерывание DMA_IT_TC генерируется раньше чем выйдет последний бит. Сейчас делаю так: выставляю флаг при DMA_IT_TC, и в главном потоке ожидаю конца смотря на RXNE SPI... не красиво...
nerozero вне форума  
Непрочитано 21.01.2017, 23:40  
nerozero
Вид на жительство
 
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
nerozero на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

elesy,
помнится в STM32F10x в структуре ADC_InitStructure было еще поле: ADC_Mode. У вас не видно, хотя может его нет в STM32L151...
nerozero вне форума  
Непрочитано 22.01.2017, 12:07  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,504
Сказал спасибо: 401
Сказали Спасибо 2,218 раз(а) в 1,316 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от nerozero Посмотреть сообщение
Добра всем,

STM32 SPI DMA (STM в роли мастера, работает только на отсылание).

Как правильно поднять ChipSelect (CS) пин по окончании транзакции? Прерывание DMA_IT_TC генерируется раньше чем выйдет последний бит. Сейчас делаю так: выставляю флаг при DMA_IT_TC, и в главном потоке ожидаю конца смотря на RXNE SPI... не красиво...
Как советует мануал, определять конец передачи по исчезновению бита занятости SPI_SR_BSY в регистре SPIx-›SR, после этого можно выключить SPI, если управление NSS (он же CS) аппаратное, или вручную поднять NSS при софтовом его управлении. А начинать следить за битом занятости надо с момента возникновения прерывания по завершению DMA.
Когда суммарный делитель частоты SPI небольшой, не превышает примерно 1:4 от системной частоты, это можно делать прямо в прерывании без особого ущерба. При бОльших делителях можно снизить приоритет прерывания от DMA и тоже не особо то париться, ожидая завершения передачи в прерывании.
NewWriter вне форума  
Непрочитано 22.01.2017, 12:49  
nerozero
Вид на жительство
 
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
nerozero на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Как советует мануал, определять конец передачи по исчезновению бита занятости SPI_SR_BSY в регистре SPIx-›SR, после этого можно выключить SPI, если управление NSS (он же CS) аппаратное, или вручную поднять NSS при софтовом его управлении. А начинать следить за битом занятости надо с момента возникновения прерывания по завершению DMA.
Когда суммарный делитель частоты SPI небольшой, не превышает примерно 1:4 от системной частоты, это можно делать прямо в прерывании без особого ущерба. При бОльших делителях можно снизить приоритет прерывания от DMA и тоже не особо то париться, ожидая завершения передачи в прерывании.
Могли бы привести пример аппаратного контроля NSS в режиме мастера? У меня не получилось никак.
nerozero вне форума  
Непрочитано 22.01.2017, 12:55  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Потому что референс не читали ни разу, никак. Вот и есть повод заглянуть туда, а есть ли в вашем СТМ32 аппаратное управление NSS? А то ваше никак может длиться всю жизнь.
STM32F0 вне форума  
Непрочитано 22.01.2017, 15:22  
nerozero
Вид на жительство
 
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
nerozero на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

STM32F0, С таким пафосом как вы вообще выходите в общество то?! Если есть что сказать, говорите. А нет, - есть такая опция - не отсылать сообщения.

Простите за оффтоп...
nerozero вне форума  
Непрочитано 22.01.2017, 18:03  
DanilinSA
Почётный гражданин KAZUS.RU
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,672
Сказал спасибо: 130
Сказали Спасибо 1,074 раз(а) в 517 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Как советует мануал, определять конец передачи по исчезновению бита занятости SPI_SR_BSY в регистре SPIx-›SR, после этого можно выключить SPI, если управление NSS (он же CS)
Почитайте про SPI в STM32: SPI: Вы всё делаете не так !
DanilinSA вне форума  
Непрочитано 22.01.2017, 19:21  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Если бы аффтар понимал бы что к чему, он бы эту статью и не писал. Охренеть, за столько лет существования СТМ32 к чуваку внезапно вдруг пришло озарение, референс соизволил прочитать, наконец-то. И что-то мне подсказывает, что оно не последнее. Тем более что аффтару уже вбивали в его дурную голову, что в другом случае всё будет по другому и совсем не так как он это себе представляет на данный момент. И много то не надо, достаточно добавить СД-карту. Но для отстойника типа хабры-швабры темы типа "Прикинь, 2+2=4 !" это нормально.
STM32F0 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 17:02.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot