Страница 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
Да, затупил немного, прошу прощения :oops:
Конечно же, я имел в виду - высокой входное сопротивление.

ПыСы. До сегодняшнего дня, я думал, что высокоимпедансное - это с высоким сопротивлением. А оказывается, это Z-состояние :facepalm:

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? Флешка на одном девайсе.