реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 SWSTART, SWSTART
Stepan_L
сообщение Jan 23 2012, 08:26
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Привет всем.Люди добрые, что то не получается установить SWSTART.Все остальные например TSVREFE, нормально "поднимаются",а этот что-то ?????
IAR 5.41 STM32F100 вот код

void ADC_init(void)
{
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN; // такты на АЦП
ADC1->CR2 |= ADC_CR2_ADON; // питание на АЦП
ADC1->CR2 |= ADC_CR2_TSVREFE; // питание на темп. сенсор и датчик напр.
ADC1->CR2 |= ADC_CR2_EXTSEL; // запуск преобразования по установки бита swstart
ADC1->CR2 |= ADC_CR2_EXTTRIG; // включаем запуск от внешнего события (у нас это свтарт)
ADC1->SMPR1 |= ADC_SMPR1_SMP16; // ставлю макс. кол-во цыклов (239.5) на преобразование для 16 канала где теп. сенсор
ADC1->SQR3 = ADC_SQR3_SQ1_4; // выбираем 16 канал для 1 преобразования (0b10000)
}

в main
ADC1->CR2 |= 0x00400000;//ADC_CR2_SWSTART; // запуск преобразования
SWSTART как был,так и сидит в 0.



--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 23 2012, 09:01
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Stepan_L @ Jan 23 2012, 10:26) *
SWSTART как был,так и сидит в 0.
Невнимательно читаете документацию:
QUOTE
This bit is set by software to start conversion and cleared by hardware as soon as conversion starts.



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Jan 23 2012, 09:22
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



Даааааааааа......ну тогда почему преобразование не завершается ????


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jan 23 2012, 10:04
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Так вроде работает. Только здесь был канал 2 и время выборки меньше:
Код
s32 i;

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;

ADC1->SMPR2=ADC_SMPR2_SMP2_0*2; // 2 = время выборки 13.5 циклов такт частоты АЦП, Rвых <= 11.4 Ком
ADC1->SQR1=ADC_SQR1_L_0*(1-1); // 1 = кол-во каналов
ADC1->SQR3=ADC_SQR3_SQ1_0*2; // 2 = канал номер 2

ADC1->CR1=0;
ADC1->CR2=ADC_CR2_EXTSEL_0*7 | // 7 = программный старт АЦП с помощью ADC_CR2_SWSTART
           ADC_CR2_EXTTRIG; // разрешить запуск, в том числе программный запуск

ADC1->CR2 |= ADC_CR2_ADON; // включить

ADC1->CR2 |= ADC_CR2_RSTCAL; // сбросить калибровку
i=0;
while(i<10000 && (ADC1->CR2 & ADC_CR2_RSTCAL)) i++; // дождаться пока сбросится

ADC1->CR2 |= ADC_CR2_CAL; // калибровка
i=0;
while(i<10000 && (ADC1->CR2 & ADC_CR2_CAL)) i++; // дождаться

потом
Код
  ADC1->SR = ~ADC_SR_EOC;
  ADC1->CR2 |= ADC_CR2_EXTTRIG|ADC_CR2_SWSTART; // начать преобразование

  i=0;
  while((!(ADC1->SR & ADC_SR_EOC)) && i<1000) i++; // конец преобразования - сбрасывается при чтении ADC_DR

  acp_d = ADC1->DR; // результат АЦП

Go to the top of the page
 
+Quote Post
Stepan_L
сообщение Jan 23 2012, 10:36
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 59
Регистрация: 26-08-08
Из: Ереван
Пользователь №: 39 828



спасибо,стал работать,у меня канал 17,термодатчик, сейчас разберусь какая разница между вашим и моим кодом. Может быть все в ADC_CR2_CAL???


--------------------
ARM_enia
Go to the top of the page
 
+Quote Post
maksimp
сообщение Jan 23 2012, 12:54
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 313
Регистрация: 2-07-11
Пользователь №: 66 023



Цитата(Stepan_L @ Jan 23 2012, 14:36) *
спасибо,стал работать,у меня канал 17,термодатчик, сейчас разберусь какая разница между вашим и моим кодом. Может быть все в ADC_CR2_CAL???

У меня долго не работало, самая неочевидная оказалась эта строчка:
Код
ADC1->SR = ~ADC_SR_EOC;
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016