Перейти к содержанию
    

STM32F103RE, DAC и VREF

Господа, пытаюсь подружиться с DAC в STM32F103RET6 (64 ноги).

Вот код:

const uint16_t sin[32] = {

2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909,
599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647};

unsigned char i=0;

........

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);



  DAC->CR |= DAC_CR_EN1;
    

    
while(1)
{
    DAC->DHR12R1=sin[i++]; 
    if (i==32) i=0; 
    delay_us(10);    
   }

 

На выходе получаю синусоиду от 1.5 до 2.3 вольт.

Пытаюсь разобраться, как же она расчитывается - в формуле фигурирует Vref.

А у указанного контроллера такой ножки нет.

Как быть? Мне надо полноразмерную синусоиду.

Изменено пользователем Salamander

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Vref внутренний, 1.2 вольта. Поищите в даташите сказано как использовать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прошелся поиском по Vref по всем 1000 страницам даташита - нет этого. Написано только, что в 64pin версиях Vref+ внутри соединен с Vdda

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прошелся поиском по Vref по всем 1000 страницам даташита - нет этого

Это вы по Reference manual-у смотрели. Даташит CD00191185.pdf стр.44 табл.13 - 1.2V

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В качестве опорного напряжения для АЦП и ЦАП используется Vref+. В корпусах с малым количеством выводов эта цепь подключена к питанию Vdda, которое, обычно цепляют к источнику Vdd (потом плачутся, что шумит АЦП).

Vrefint - это внутренний источник напряжения, который можно использовать при относительных измерениях - сначала измерил что-то, потом - внутренний источник, сравнил. К ЦАПам отношения не имеет.

Примерно, так представляю...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Господа, пытаюсь подружиться с DAC в STM32F103RET6 (64 ноги).

Вот код:

 

На выходе получаю синусоиду от 1.5 до 2.3 вольт.

Пытаюсь разобраться, как же она расчитывается - в формуле фигурирует Vref.

А у указанного контроллера такой ножки нет.

Как быть? Мне надо полноразмерную синусоиду.

 

Выходной буфер включен?

 

  /* DAC channel1 Configuration */
  DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;
  DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
  DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
  DAC_Init(DAC_Channel_1, &DAC_InitStructure);
  DAC_Cmd(DAC_Channel_1, ENABLE);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...