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

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

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

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

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

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


 
Опции темы
Непрочитано 05.02.2013, 11:18  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию STM32 АЦП несколько каналов

Здравствуйте.
Есть код, который позволяет читать данные с одного АЦП инжектированного канала. Как подключить 3 инжектированных канала?


Код:
 
#include‹stm32f10x_rcc.h›
#include‹stm32f10x_gpio.h›
#include "stm32f10x.h"
 
int main(void)
{
  GPIO_InitTypeDef PORT;
  //Включаем порты А и С 
  RCC_APB2PeriphClockCmd((RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOA) , ENABLE);
  //Настраиваем ноги PC8 и PC9 на выход. Там у нас висят светодиоды
  PORT.GPIO_Pin = (GPIO_Pin_9 | GPIO_Pin_8);
  PORT.GPIO_Mode = GPIO_Mode_Out_PP;
  PORT.GPIO_Speed = GPIO_Speed_2MHz;
  GPIO_Init( GPIOC , &PORT);
  //Порт A настраивать смысла нет, все его ноги по умолчанию входы что нам и нужно
  RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); //Включаем тактирование АЦП
  ADC1-›CR2 |= ADC_CR2_CAL; //Запуск калибровки АЦП
  while (!(ADC1-›CR2 & ADC_CR2_CAL))
    ; //Ожидаем окончания калибровки
  ADC1-›SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); //Задаем
                                                                                            // длительность выборки
  ADC1-›CR2 |= ADC_CR2_JEXTSEL; //Преобразование инжектированной группы
                                                       //запустится установкой бита JSWSTART
  ADC1-›CR2 |= ADC_CR2_JEXTTRIG; //Разрешаем внешний запуск инжектированной группы
  ADC1-›CR2 |= ADC_CR2_CONT; //Преобразования запускаются одно за другим
  ADC1-›CR1 |= ADC_CR1_JAUTO; //Разрешить преобразование инжектированной группы
                                     //после регулярной. Не понятно зачем, но без этого не работает
  ADC1-›JSQR |= (1‹‹15); //Задаем номер канала (выбран ADC1)
  ADC1-›CR2 |= ADC_CR2_ADON;//Теперь включаем АЦП
  ADC1-›CR2 |= ADC_CR2_JSWSTART; //Запуск преобразований
  while (!(ADC1-›SR & ADC_SR_JEOC)) //ждем пока первое преобразование завершится
    ;
  //Теперь можно читать результат из JDR1
  uint32_t adc_res; //Использовал переменную для отладки. Можно и без неё
  while(1)
  {
    adc_res=ADC1-›JDR1;
  }
}
[http://easystm32.ru/for-beginners/20-adc-in-stm32-part-2
Реклама:
sanstan вне форума  
Непрочитано 05.02.2013, 11:53  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: STM32 АЦП несколько каналов.

Там 4 инжектированых канала. Вы должны в регистре ADC_JSQR указать номера каналов и их число. Забирать данные из регистров (ADC_JDRx) (x= 1..4).
SasaVitebsk вне форума  
Непрочитано 05.02.2013, 12:12  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: STM32 АЦП несколько каналов.

А то что обращение идет от АЦП1 ( ADC1-› ) - все равно ADC2, ADC3, ADC4 ?
sanstan вне форума  
Непрочитано 05.02.2013, 14:03  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: STM32 АЦП несколько каналов

Не понял. АЦП - ADC1. Номер канала данного АЦП есть номер канала.
SasaVitebsk вне форума  
Непрочитано 26.03.2013, 16:44  
sanstan
Прописка
 
Регистрация: 06.03.2007
Сообщений: 144
Сказал спасибо: 22
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
sanstan на пути к лучшему
По умолчанию Re: STM32 АЦП несколько каналов

Запрограммировал 3 канала PA1, PA2, PA3, а выдает сигнал только 3 канал на PA3
Код:
.....................
ADC1-›CR1 |= ADC_CR1_JAUTO; //Разрешить преобразование инжектированной группы
//после регулярной. Не понятно зачем, но без этого не работает
ADC1-›JSQR |=ADC_JSQR_JL_1 ; // 3 канала преобразований
ADC1-›JSQR |= 	ADC_JSQR_JSQ4_0 | //Задаем номер канала ADC_JDR3 (выбран ADC1)
		ADC_JSQR_JSQ3_1	|		//Задаем номер канала ADC_JDR2 (выбран ADC2)
		ADC_JSQR_JSQ2_1 | ADC_JSQR_JSQ2_0;		//Задаем номер канала ADC_JDR1 (выбран ADC3)
ADC1-›CR2 |= ADC_CR2_ADON;// Теперь включаем АЦП
............
Как правильно подключить 3 канала?
sanstan вне форума  
Непрочитано 29.03.2013, 08:52  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: STM32 АЦП несколько каналов

Добрый день! я вот подумал, может Вам поможет мой кусок кода с опросом 3 какналов ацп в инжектированной последовательности преобразований
:
// âûâîäû ÀÖÏ íà âõîä ADC_in9 ìîíèòîð ïèòàíèÿ
GPIOB-›CRL &= ~GPIO_CRL_MODE1;
GPIOB-›CRL &= ~GPIO_CRL_CNF1;
// âûâîäû ÀÖÏ íà âõîä ADC_in14 15 íà àêñåëåðîìåòð
GPIOC-›CRL &= ~GPIO_CRL_MODE4;
GPIOC-›CRL &= ~GPIO_CRL_CNF4;

GPIOC-›CRL &= ~GPIO_CRL_MODE5;
GPIOC-›CRL &= ~GPIO_CRL_CNF5;

RCC-›CFGR |= RCC_CFGR_ADCPRE; // òàêòîâàÿ ÀÖÏ = PCLK/8
RCC-›CFGR |= RCC_CFGR_ADCPRE_DIV8;
RCC-›APB2ENR |= RCC_APB2ENR_ADC1EN;
// ðåæèì èíæåêòèðîâàííîãî ïðåîáðàçîâàòåëÿ
// ADC1-›JSQR|= ADC_JSQR_JL_1; // 3 ïðåîáðàçîâàíèÿ â ïîñëåäîâàòåëüíîñòè
// ADC1-›JSQR |= ADC_JSQR_JSQ1_0 | ADC_JSQR_JSQ1_1 |ADC_JSQR_JSQ1_2 |ADC_JSQR_JSQ1_3; // ïåðâîå ïðåîáðàçîâàíèå êàíàë 15
// ADC1-›JSQR |= ADC_JSQR_JSQ2_1 |ADC_JSQR_JSQ2_2 |ADC_JSQR_JSQ2_3; // âòîðîå ïðåîáðàçîâàíèå êàíàë 14


ADC1-›JSQR=0x27a5c0;

//Çàäàíèå íîìåðîâ êàíàëîâ â êàæäîì ïðåîáðàçîâàíèè
ADC1-›JSQR = 2‹‹20; //â ãðóïïå èíæåêòèðîâàííûõ êàíàëîâ 3 ïðåîáðàçîâàíèÿ
ADC1-›JSQR |= 15‹‹15; //ïðåîáðàçîâàíèå 1 - êàíàë 15
ADC1-›JSQR |= 14‹‹5; //ïðåîáðàçîâàíèå 2 - êàíàë 9
ADC1-›JSQR |= 9‹‹10; //ïðåîáðàçîâàíèå 3 - êàíàë 14

ADC1-›CR1 |= ADC_CR1_SCAN; // ðåæèì ñêàíèðîâàíèÿ ïèíîâ

// ïðîãðàììíûé çàïóñê
ADC1-›CR2 = ADC_CR2_JEXTSEL_0 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTTRIG;
// âêëþ÷åíèå
ADC1-›CR2 |= ADC_CR2_ADON;
// êàëèáðîâêà
ADC1-›CR2 |= ADC_CR2_RSTCAL;
while ((ADC1-›CR2 & ADC_CR2_RSTCAL) == ADC_CR2_RSTCAL){}
ADC1-›CR2 |= ADC_CR2_CAL;
while ((ADC1-›CR2 & ADC_CR2_RSTCAL) == ADC_CR2_CAL){}



return;
}
и еще, часть кода можно генерить любительским визардом:
http://mycontroller.ru/stm32-generat...koda/#more-211
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STM32 Соответствие портов и каналов АЦП. Chudilo Микроконтроллеры, АЦП, память и т.д 2 06.03.2012 16:10
uVision и библиотеки stm32 peripheral library - проблемы с дебагом и АЦП ) rukez Микроконтроллеры, АЦП, память и т.д 11 13.02.2011 15:35
Помогите с проэктом: 1 АЦП 8бит + 16 комутируемых каналов vahamov Микроконтроллеры, АЦП, память и т.д 54 13.07.2009 11:10
Раздельное использование каналов AC`97 joogorden Микроконтроллеры, АЦП, память и т.д 1 30.12.2008 00:02
зачем PIC-ам много каналов АЦП? stri Микроконтроллеры, АЦП, память и т.д 3 01.11.2007 12:32


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


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