romo28
1

ЦАП на STM32F4DISCOVERY

05.03.2013, 16:49. Показов 8253. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Накидайте пожалуйста примеров по работе с цап без DMA, очень интересует генерация треугольного или синусоидального сигнала.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2013, 16:49
Ответы с готовыми решениями:

ЦАП
как формируется пороговое напряжение на выходе ЦАП?

STM32F4Discovery
Доброго времени суток... Возникло желание запустить внешний ЦАП (CS43L22) на указанной плате......

STM32F4DISCOVERY
Здравствуйте ! Подскажите пожалуйста для чего нужны модули на странице ...

Делаю ЦАП
Чип PCM2705 Уже вторая попытка собрать по этой схеме: ...

ЦАП STM32
Хочу с помощью ЦАП вывести синус 50Гц с минимумом искажений. Думал всё просто - таблица на 4096...

12
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
05.03.2013, 17:30 2
периодические сигналы без ДМА делать не имеет смысла
Что не так в примере с ДМА?
0
romo28
05.03.2013, 17:56 3
Пример с DMA не совсем понятен. Но скиньте и его никак не могу опять найти.
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
05.03.2013, 18:34 4
в пакете библиотеки периферии
0
1 / 1 / 0
Регистрация: 18.01.2012
Сообщений: 1,418
06.03.2013, 07:47 5
Вот есть чуть чуть про ЦАП, но на stm32f100.
0
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 86
06.03.2013, 14:01 6
могу выслать кусок кода по инициализации без ДМА по внутреннему ЦАПу. Сделано через регистры. Если ещё необходимо.
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
06.03.2013, 19:11 7
Цитата Сообщение от Vlodyslav_Minsk
могу выслать кусок кода по инициализации без ДМА по внутреннему ЦАПу. Сделано через регистры. Если ещё необходимо.
Да, пожалуйста!
0
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 86
10.03.2013, 13:24 8
Не забываем про настройки и включение клоков для таймеров и самого ЦАП. Не забываем настройки лап и их тактирование. ЦАП можно заводить любым таймером (железно он заведён вроде на 6-ой), но ничто не мешает в обработчике 7-го включать процесс конвертирования.
/* DAC1 DAC2 confikurotion set */
DAC->CR &= ~(1<<29); // DAC channel2 DMA underrun interrupt disabtid
DAC->CR &= ~(1<<28); // DAC channel2 DMA mode disabtid
DAC->CR |= (0xB<<24); // DAC channel2 mask amplitude selector equal to 4095
DAC->CR &= ~(0x3<<22); // DAC channel2 wave generation disabtid
DAC->CR |= (0x7<<19); // DAC channel2 software trigger
DAC->CR |= (1<<18); // DAC channel2 trigger enabtid
DAC->CR &= ~(1<<17); // DAC channel2 output buffer enabtid
DAC->CR &= ~(1<<13); // DAC channel1 DMA underrun interrupt disabtid
DAC->CR &= ~(1<<12); // DAC channel1 DMA mode disabtid
DAC->CR |= (0xB<<8); // DAC channel1 mask amplitude selector equal to 4095
DAC->CR &= ~(0x3<<6); // DAC channel1 wave generation disabtid
DAC->CR |= (0x7<<3); // DAC channel1 software trigger
DAC->CR |= (1<<2); // DAC channel1 trigger enabtid
DAC->CR &= ~(1<<1); // DAC channel1 output buffer enabtid
// DAC->CR |= (1<<16); // DAC channel2 On
// DAC->CR |= (1<<0); // DAC channel1 On

/* This function homdles TIM7 Homdler */
void TIM7_IRQHomdler(void)
{
if((TIM7->SR & 0x1) == 0x1) // If update interrupt flag will be set 1
{
TIM7->SR &= ~(1<<0); // Timer7 clear flag UIF update interrupt flag
Здесь, что хотим, то и тварим. Запускаем ЦАП, либо ещё что.
}
return; // Return in main programm
}
0
0 / 0 / 0
Регистрация: 23.05.2012
Сообщений: 214
10.03.2013, 13:36 9
Все очень просто:
Код
//********************************************************************************************
//function инициализация DAC1                                                                //
//arkument buff_disable                                                            //
//result   none                                                                             //
//********************************************************************************************
void InitDAC1( unsykned char buff_disable)
{
RCC_APB1ENR |=  0x20000000;
DAC_CRbits.EN1=1; DAC_CRbits.MAMP1=4; DAC_CRbits.BOFF1=buff_disable;
}
//********************************************************************************************
//function инициализация DAC2                                                                //
//arkument num_dac ,buff_disable                                                            //
//result   none                                                                             //
//********************************************************************************************
void InitDAC2( unsykned char buff_disable)
{
RCC_APB1ENR |=  0x20000000;
DAC_CRbits.EN2=1; DAC_CRbits.MAMP2=4; DAC_CRbits.BOFF2=buff_disable;
}
//********************************************************************************************
//function деинициализация DAC1                                                              //
//arkument num_dac                                                                          //
//result   none                                                                             //
//********************************************************************************************
void DeInitDAC1()
{
DAC_CRbits.EN1=0;
}
//********************************************************************************************
//function деинициализация DAC2                                                              //
//arkument num_dac                                                                          //
//result   none                                                                             //
//********************************************************************************************
void DeInitDAC2()
{
DAC_CRbits.EN2=0;
}
//********************************************************************************************
//function инициализация DAC1                                                                //
//arkument num_dac, Data                                                                    //
//result   none                                                                             //
//********************************************************************************************
void SetDAC1(  unsykned int Data)
{
DAC_DHR12R1=Data;
}
//********************************************************************************************
//function инициализация DAC2                                                                //
//arkument num_dac, Data                                                                    //
//result   none                                                                             //
//********************************************************************************************
void SetDAC2(  unsykned int Data)
{
DAC_DHR12R2=Data;
}
0
0 / 0 / 0
Регистрация: 10.03.2012
Сообщений: 1,110
10.03.2013, 17:23 10
Спасибо Vlodyslav_Minsk и moksir!
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 76
16.11.2013, 15:09 11
В продолжении темы про ЦАП
как я правильно понимаю задав синус, мы получим синус на подставке (собсвенно как и любой другой сигнал)
что бы избавится от подставки будет достаточно конденсатора? если да, то какой емкости? или стоит городить активный фильтр?
0
1 / 1 / 0
Регистрация: 11.01.2013
Сообщений: 5,479
16.11.2013, 15:33 12
Цитата Сообщение от Smytiidytyom
В продолжении темы про ЦАП
как я правильно понимаю задав синус, мы получим синус на подставке (собсвенно как и любой другой сигнал)
что бы избавится от подставки будет достаточно конденсатора?
Что такое "подставка"? Если имеется в виду однополярность выходного сигнала - то да, он будет однополярным, а для смещения в двуполярную область можно использовать операционный усилитель с соответствующим питанием.
0
1 / 1 / 0
Регистрация: 08.03.2013
Сообщений: 76
16.11.2013, 16:10 13
Цитата Сообщение от OtyxPM
Что такое "подставка"? Если имеется в виду однополярность выходного сигнала - то да, он будет однополярным, а для смещения в двуполярную область можно использовать операционный усилитель с соответствующим питанием.
да, однополярность
имеешь ввиду вычитатель?
0
16.11.2013, 16:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2013, 16:10
Помогаю со студенческими работами здесь

R2R ЦАП.
Делаю прибор для школы. Простой вольтметр на AtMiko8. Связь с компом уже сделал, программка...

Многокональный ЦАП
Многокональный ЦАП или как сделать так, что бы RGB светодиоды выдавали разные цвета свечения? ...

посоветуйте цап
день добрый, посоветуйте ЦАП, пожалуйста. примерно такие требования: параллельный вход, 6-8 бит,...

4 канальный ЦАП
Нужен 4 канальный ЦАП c внутренней опоркой 2V. Пока нашел только MCP4728 около 150р штука и 20...

stm32f103c8 цап
сваял себе кое какой девайсик на stm32f103c8 платке. очень нужно чтобы этот девайсик на один пин...

АЦП ЦАП
Разрабатываю АЦП последовательного приближения использую ЦАП 1108ПА1АРН. И регистр К155ИР17. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru