Страница 568 из 628
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт апр 29, 2016 07:02:54
КРАМ
FireProoF писал(а):как передать по UART число с точкой
Вероятно, передав в нужном месте эту самую точку...
Вопрос странный...
Вы не в курсе относительно форматирования вывода в sprintf или относительно того, что в терминал нужно передавать
ASCII?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт апр 29, 2016 07:34:04
FireProoF
Я вот с точкой понял. Т.е. сначала передаем целую часть, потом знак точки, потом дробную. Дробную часть придётся урезать. ПРост думал, может что получше есть)
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт май 03, 2016 02:24:13
Chettuser
Постигаю просветление с DMA в STM32. А вот как народ умудряется с GPIO через DMA работать? На картинках в RM в разделе DMA про GPIO ничего нету, это и понятно. Как я понимаю вместо начального адреса памяти надо прописать адрес порта и без инкремента? А какой тогда режим выставлять - "память-периферия" или "память-память"? И как тут быть с сигналом "Event"?
Спасибо.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт май 03, 2016 17:28:58
FireProoF
Столкнулся с необъяснимым) Есть
L3GD20. Это ДУС с термометром. Выходной регистр термометра размером в один байт. Масштабный коэффициент 1 град/бит. Вроде всё здорово). Считываю показания: 0х12 = 18 град. Тут мне пришла мне мысль нагреть его феном. Грею, а показания температуры стали опускаться! Даж в минус уходит.
За основу взял STэмовскую библиотеку под stm32f3discovery
Спойлер
Код: Выделить всё
void Demo_GyroReadTempRaw (uint8_t* pfData, uint8_t* pfDataSign)
{
uint8_t rawData = 0;
int i =0;
L3GD20_Read(&rawData,L3GD20_OUT_TEMP_ADDR,1);
if(((uint8_t)rawData > 0x7F) == 0) { *pfDataSign = 0;}
else
{
*pfDataSign = 1;
rawData &= 0x7F;
rawData = 0x7F - rawData;
}
*pfData = rawData;
}
Кто-нибудь может это объяснить?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:06:28
FireProoF
Всем привет. На stm32f3-discovery АЦП имеют верхний предел в 3,3В, а нужно измерять 5В. Можно ли применить преобразователь логических уровней?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:17:07
Аlex
Что Вы имеете в виду под фразой "преобразователь логических уровней" ? Если это обычный резистивный делитель, то можно.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:26:18
FireProoF
Про делитель я спрашивал уже у того, кто мне эту задачку задал) Мне сказали, что сопротивление самого датчика внесёт погрешность (как я понял, постоянную) и почему-то такая схема не будет работать на "больших" частотах (до 1кГц).
Предложили собрать схему на ОУ. Пока есть время, хочу поискать готовые решения.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:31:17
Аlex
Если для датчика нужен высокоимпедансный вход, то решение с ОУ самое правильное.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:38:28
FireProoF
Есть такой
вот датчик и stm32f3d.
Я просто не понял про высокоимпедансный вход. Это, типо, точный АЦП?)
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 07:39:51
Аlex
FireProoF писал(а):Я просто не понял про высокоимпедансный вход.
Всё просто -
https://www.yandex.ru/yandsearch?clid=9 ... 63204370.1

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Сб май 14, 2016 21:01:58
Jack_A
Немножко уводящая в сторону ссылка. Z - состояние имеет смысл для логических выходов. В данном случае, как я понял, речь идет об АЦП. И для него высокий импеданс - в переводе на рабоче-крестьянский язык - это просто высокое входное сопротивление АЦП, не нагружающее нижнее плечо делителя и не искажающее таким образом коэффициент передачи. Частотные свойства останутся приемлемыми, если не сильно задирать номиналы резисторов делителя, да и подкорректировать их можно емкостью, как делают, к примеру, в выносных делителях осциллов.
Конечно, если вход многофункциональный, логическую часть его следует перевести в Z - состояние, чтоб не мешала.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс май 15, 2016 09:48:36
Аlex
Да, затупил немного, прошу прощения
Конечно же, я имел в виду - высокой входное сопротивление.
ПыСы. До сегодняшнего дня, я думал, что высокоимпедансное - это с высоким сопротивлением. А оказывается, это Z-состояние

Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс май 15, 2016 14:46:44
креазот
привет
микроконтроллер ATmega64A
правильно ли я понимаю что на вывод AVCC подается +5В напряжения питания?
вот из даташита:
AV CC is the supply voltage pin for Port F and the A/D Converter. It should be externally connected to V CC ,
even if the ADC is not used. If the ADC is used, it should be connected to V CC through a low-pass filter
и еще вопрос, нужно ко всем выводам питания которые обозначены на рисунке подводить напряжение питания? или можно только к одному выводу GND подвести минус, и к одному VCC плюс? или ко всем GND и VCC тянуть напряжение питания?
микрокотроллера у меня еще нет на руках
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс май 15, 2016 15:01:13
КРАМ
Питание и земли ОБЯЗАТЕЛЬНО подводить ко всем выводам питания и земли.
Эти выводы делают для разгрузки внутренних шин.
На вход аналогового питания подают либо само питание, либо его же, но через фильтр.
Аналоговую землю соединяют с цифровой землей в районе самого этого пина, но тонким проводником. При этом все аналоговые земли соединяют именно с аналоговой землей контроллера. Таким образом образуется ДВЕ земли. Чистая и грязная.
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс май 15, 2016 15:25:14
креазот
КРАМ, спасибо за развернутый ответ. интересно
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вс май 22, 2016 20:27:03
FireProoF
Всем привет. Кто-нибудь может портировать участок кода, отвечающий за запуск SPI на stm32f1 на stm32f3?
Спойлер
Код: Выделить всё
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;//включить тактирование альтернативных функций
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;//включить тактирование порта А
//вывод управления SS: выход двухтактный, общего назначения,50MHz
GPIOA->CRL |= GPIO_CRL_MODE4; //
GPIOA->CRL &= ~GPIO_CRL_CNF4; //
GPIOA->BSRR = GPIO_BSRR_BS4; //
//вывод SCK: выход двухтактный, альтернативная функция, 50MHz
GPIOA->CRL |= GPIO_CRL_MODE5; //
GPIOA->CRL &= ~GPIO_CRL_CNF5; //
GPIOA->CRL |= GPIO_CRL_CNF5_1; //
//вывод MISO: вход цифровой с подтягивающим резистором, подтяжка к плюсу
GPIOA->CRL &= ~GPIO_CRL_MODE6; //
GPIOA->CRL &= ~GPIO_CRL_CNF6; //
GPIOA->CRL |= GPIO_CRL_CNF6_1; //
GPIOA->BSRR = GPIO_BSRR_BS6; //
//вывод MOSI: выход двухтактный, альтернативная функция, 50MHz
GPIOA->CRL |= GPIO_CRL_MODE7; //
GPIOA->CRL &= ~GPIO_CRL_CNF7; //
GPIOA->CRL |= GPIO_CRL_CNF7_1; //
//настроить модуль SPI
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; //подать тактирование
SPI1->CR2 = 0x0000; //
SPI1->CR1 = SPI_CR1_MSTR; //контроллер должен быть мастером,конечно
SPI1->CR1 |= SPI_CR1_BR_0; //для начала зададим маленькую скорость
SPI1->CR1 |= SPI_CR1_SSI;
SPI1->CR1 |= SPI_CR1_SSM;
SPI1->CR1 |= SPI_CR1_SPE; //разрешить работу модуля SPI
А то я уже 500й раз ищу баг, и глаза уже замылились.
Переписал вот так:
Спойлер
Код: Выделить всё
GPIO_InitTypeDef gpio;
SPI_InitTypeDef spi;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
//GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_5);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_5);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_5);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_5);/**/
gpio.GPIO_Mode = GPIO_Mode_AF;
gpio.GPIO_Pin = /*GPIO_Pin_12 | */GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_NOPULL;//GPIO_PuPd_DOWN;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio);
gpio.GPIO_Mode = GPIO_Mode_OUT;
gpio.GPIO_Pin = GPIO_Pin_12;
gpio.GPIO_OType = GPIO_OType_PP;
gpio.GPIO_PuPd = GPIO_PuPd_DOWN;//GPIO_PuPd_DOWN;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio);
SPI_I2S_DeInit(SPI2);
spi.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
spi.SPI_DataSize = SPI_DataSize_8b;
spi.SPI_CPOL = SPI_CPOL_Low;
spi.SPI_CPHA = SPI_CPHA_1Edge;
spi.SPI_NSS = SPI_NSS_Soft;
spi.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8;
spi.SPI_FirstBit = SPI_FirstBit_MSB;
spi.SPI_CRCPolynomial = 7;
spi.SPI_Mode = SPI_Mode_Master;
SPI_Init(SPI2, &spi);
/* Configure the RX FIFO Threshold */
SPI_RxFIFOThresholdConfig(SPI2, SPI_RxFIFOThreshold_QF);
SPI_Cmd(SPI2, ENABLE);
Но CS при передаче не дергается(
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср май 25, 2016 20:25:19
Studentos
Здравствуйте, вопрос новичка. В цикле чтения при обмене данными в шине микропроцессорной системы присутствуют такие вещи как sync, din, rply. Что это, отдельные разряды шины и для чего ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Вт май 31, 2016 20:09:22
FireProoF
Всем привет. К stm32 подключено несколько датчиков. Данные записываются как только проходит цикл опроса. Так вот некоторые датчики опрашиваются не всегда, поэтому частота опроса разная. Вопрос: можно ли использовать счётчик таймера для выставления отметок времени в логе?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Ср июн 01, 2016 09:15:43
Jack_A
Studentos писал(а): В цикле чтения при обмене данными в шине микропроцессорной системы присутствуют такие вещи как sync, din, rply. Что это, отдельные разряды шины и для чего ?
Я понимаю, тема секретная,

но хоть намеком - что за шина, что за микропр. система ?
Re: Мелкие вопросы по МК и ПЛИС.
Добавлено: Пт июн 03, 2016 21:28:27
hostmit
Ребят, подскажите чем можно прошить MBM29F800BA-70PFTN? Флешка на одном девайсе.