Мелкие вопросы по МК и ПЛИС.
Re: Мелкие вопросы по МК и ПЛИС.
Будет ли работать I2C если от микроконтроллера с 5В напряжения питания соединить через два резистора с ATmega88, запитанную от 3.5В.
Тут пишут:
http://we.easyelectronics.ru/Shematech/ ... oystv.html
что можно с полевым транзистором соединить по IIC два микроконтроллера. Как правильно это сделать и какой транзистор лучше применить.
И еще ATmega88 соединена по IIC с предусилителем на TDA7469 c напряжением питания 5В. Значит схема на полевых транзисторах получиться сдвоенной. От одного микроконтроллера с 5В с подтягивающими резисторами, через полевые транзисторы, снова подтягивающие резисторы, но к 3,5В и ко входу IIC ATmega88, затем с этих же входов снова на другие полевые транзисторы, после них подтягивающие резисторы к 5В и на вход IIC TDA7469.
Подходит ли для этих целей BSN20:
http://www.nxp.com/documents/data_sheet/BSN20.pdf
Тут пишут:
http://we.easyelectronics.ru/Shematech/ ... oystv.html
что можно с полевым транзистором соединить по IIC два микроконтроллера. Как правильно это сделать и какой транзистор лучше применить.
И еще ATmega88 соединена по IIC с предусилителем на TDA7469 c напряжением питания 5В. Значит схема на полевых транзисторах получиться сдвоенной. От одного микроконтроллера с 5В с подтягивающими резисторами, через полевые транзисторы, снова подтягивающие резисторы, но к 3,5В и ко входу IIC ATmega88, затем с этих же входов снова на другие полевые транзисторы, после них подтягивающие резисторы к 5В и на вход IIC TDA7469.
Подходит ли для этих целей BSN20:
http://www.nxp.com/documents/data_sheet/BSN20.pdf
- просто КОТ
- Друг Кота
- Сообщения: 12364
- Зарегистрирован: Пт дек 17, 2010 15:07:50
- Откуда: Крымский Федеральный Округ
- Контактная информация:
Re: Мелкие вопросы по МК и ПЛИС.
Котаны, такой вопрос. Есть микроконтроллер. Будем считать что пожирнее, из STM32. К нему подходят две линии с изменяющимися лог.сигналами, единичками и нулями. Линии эти он опрашивает, с частотой 2,4МГц каждую. Т.е. имеем поток в 4,8МБит/сек некоторых данных. И необходимо сохранить их на SD карточку. Как это правильно сделать? Чтоб потом можно было к этим данным обратиться как к файлу некоторой программой с ПК.
Я праильно понимаю, что в буффере надо накапливать пачку из 512 бит и писать такими кусками? А сам файл какого типа взять? ТХТ? BIN? Или ещё какие варианты есть? Какие могут возникнуть тонкости?
Я праильно понимаю, что в буффере надо накапливать пачку из 512 бит и писать такими кусками? А сам файл какого типа взять? ТХТ? BIN? Или ещё какие варианты есть? Какие могут возникнуть тонкости?
Re: Мелкие вопросы по МК и ПЛИС.
Если ATmega16 запитана от 3,5В и к ней подключен разъем USB (к INT0, INT1 через резисторы 68 Ом D+ и D-) на 5В, как согласовать уровни напряжений.
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Здрасьте всем.
Мучаю АЦП STM32F030. Что то не получается считать последовательно два канала АЦП (IN_8, IN_9). Перевёл чтение в функции, которые вызываю вручную и получаю в переменных ADC936 и ADCPOT одинаково изменяющиеся значения (Переменный резистор на IN_9).
Вроде бы выборку канала делаю функцией ADC_ChannelConfig(). Функции ADC_Cmd(ADC1,ENABLE) и DISABLE применил на всякий случай.
{
/* Convert the ADC1 Channel 8 and 9 with 28.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADCPOT = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
void ADC_936()
{
ADC_ChannelConfig(ADC1, ADC_Channel_8, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADC936 = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
Где я ошибся или что не увидел?
Мучаю АЦП STM32F030. Что то не получается считать последовательно два канала АЦП (IN_8, IN_9). Перевёл чтение в функции, которые вызываю вручную и получаю в переменных ADC936 и ADCPOT одинаково изменяющиеся значения (Переменный резистор на IN_9).
Вроде бы выборку канала делаю функцией ADC_ChannelConfig(). Функции ADC_Cmd(ADC1,ENABLE) и DISABLE применил на всякий случай.
Спойлер
void ADC_POT(){
/* Convert the ADC1 Channel 8 and 9 with 28.5 Cycles as sampling time */
ADC_ChannelConfig(ADC1, ADC_Channel_9, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADCPOT = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
void ADC_936()
{
ADC_ChannelConfig(ADC1, ADC_Channel_8, ADC_SampleTime_239_5Cycles);
ADC_Cmd(ADC1,ENABLE);
ADC_StartOfConversion(ADC1);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
ADC936 = ADC_GetConversionValue(ADC1);
ADC_StopOfConversion(ADC1);
ADC_Cmd(ADC1,DISABLE);
return;
}
Где я ошибся или что не увидел?
- FireProoF
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Чт май 14, 2015 15:11:39
- Откуда: Саратов
Re: Мелкие вопросы по МК и ПЛИС.
Насколько понял, для измерения по двум каналам и более нужно настраивать АЦП, указывая количество каналов и включив сканирование по списку.
P.S. ну или попробуйте отключать ацп после каждого измерения.
Здесь есть оба варианта и Ваша проблема
P.S. ну или попробуйте отключать ацп после каждого измерения.
Здесь есть оба варианта и Ваша проблема
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Спасибо.
Кто нибудь пользовался OpenSTM32?
Я скачал, поставил. Но что то не могу открыть проект из Cube, посмотреть.

Пункты меню неактивные. Обновления какие то среда сама закачала и установила.
Кто нибудь пользовался OpenSTM32?
Я скачал, поставил. Но что то не могу открыть проект из Cube, посмотреть.

Пункты меню неактивные. Обновления какие то среда сама закачала и установила.
Re: Мелкие вопросы по МК и ПЛИС.
service47 писал(а):Если ATmega16 запитана от 3,5В и к ней подключен разъем USB (к INT0, INT1 через резисторы 68 Ом D+ и D-) на 5В, как согласовать уровни напряжений.
Можно не согласовывать, так как МК нормально поймет 5-ти вольтовые сигналы, а если МкК захочет лог 1 дать, то 3,5 входит в диапазон для лог 1 (более 2,5 В). Если уж совсем не в моготу, можно согласовать с помощью транзисторных ключей.
(как на картинке, только используйте n-канальные транзисторы (серия даже есть IRLML).
Re: Мелкие вопросы по МК и ПЛИС.
Для V-USB требуется тактовая частота микроконтроллера от 12 МГц и более. Используется ATmega16A, запитанная от 3.5В. Будет ли стабильно работать чтение данных из USB.
Re: Мелкие вопросы по МК и ПЛИС.
Товарищи, подскажите , что за чип такой ST 1825-0057 и с чем его едят. Чип установлен на маленькой плате для обработки данных с картриджа принтера HP. Мне нужно снять с него дамп.
- КРАМ
- Друг Кота
- Сообщения: 25148
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Даже если Вы бы знали какой это контроллер, то и в этом случае Вы бы его не прочитали. У микросхем подобного назначения прошивки всегда залочены.xxx2142 писал(а):Мне нужно снять с него дамп.
Скорее всего, это какой нибудь STM32F0 с заказной прошивкой. Причем с высокой степенью вероятности еще и масочной.
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Нашёл в stm32f0xx.h следующее выражение:
ADC_CCR_VBATEN
В описании регистра CCR что то такого не нашёл. Это для чего?
ADC_CCR_VBATEN
В описании регистра CCR что то такого не нашёл. Это для чего?
- КРАМ
- Друг Кота
- Сообщения: 25148
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
Есть мнение, что это КОНСТАНТА...
И ее значение в хедере откомментировано:
И ее значение в хедере откомментировано:
Код: Выделить всё
#define ADC_CCR_VBATEN ((uint32_t)0x01000000) /*!< Voltage battery enable */Re: Мелкие вопросы по МК и ПЛИС.
RM0091
Код: Выделить всё
Bit 24 VBATEN: VBAT enable
This bit is set and cleared by software to enable/disable the VBAT channel.
0: VBAT channel disabled
1: VBAT channel enabled
Note:Software is allowed to write this bit only when ADSTART=0 (which ensures that no conversion is ongoing).
- FireProoF
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Чт май 14, 2015 15:11:39
- Откуда: Саратов
Re: Мелкие вопросы по МК и ПЛИС.
Всем привет. Такая ситуация. Спрашиваю датчик на i2c в тупом цикле, все норм. Как только начинаю опрашивать его через таймер, то чтение встает на месте. Частоту таймера уже до герца снизил.
Stm32f3 discovery. L3gd20
Stm32f3 discovery. L3gd20
- FireProoF
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Чт май 14, 2015 15:11:39
- Откуда: Саратов
Re: Мелкие вопросы по МК и ПЛИС.
Еще вопрос: как передать по UART число с точкой, чтобы можно было принять на компьютере в терминале без проблем?
P.S. с предыдущим вопросом разобрался. Там таймер с измерениями стартовал раньше инициализации периферии.
P.S. с предыдущим вопросом разобрался. Там таймер с измерениями стартовал раньше инициализации периферии.
- КРАМ
- Друг Кота
- Сообщения: 25148
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Мелкие вопросы по МК и ПЛИС.
FireProoF писал(а):как передать по UART число с точкой
Вероятно, передав в нужном месте эту самую точку...
Вопрос странный...
Вы не в курсе относительно форматирования вывода в sprintf или относительно того, что в терминал нужно передавать ASCII?
- FireProoF
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Чт май 14, 2015 15:11:39
- Откуда: Саратов
Re: Мелкие вопросы по МК и ПЛИС.
Я вот с точкой понял. Т.е. сначала передаем целую часть, потом знак точки, потом дробную. Дробную часть придётся урезать. ПРост думал, может что получше есть)
-
Chettuser
Re: Мелкие вопросы по МК и ПЛИС.
Постигаю просветление с DMA в STM32. А вот как народ умудряется с GPIO через DMA работать? На картинках в RM в разделе DMA про GPIO ничего нету, это и понятно. Как я понимаю вместо начального адреса памяти надо прописать адрес порта и без инкремента? А какой тогда режим выставлять - "память-периферия" или "память-память"? И как тут быть с сигналом "Event"?
Спасибо.
Спасибо.
- FireProoF
- Мучитель микросхем
- Сообщения: 424
- Зарегистрирован: Чт май 14, 2015 15:11:39
- Откуда: Саратов
Re: Мелкие вопросы по МК и ПЛИС.
Столкнулся с необъяснимым) Есть L3GD20. Это ДУС с термометром. Выходной регистр термометра размером в один байт. Масштабный коэффициент 1 град/бит. Вроде всё здорово). Считываю показания: 0х12 = 18 град. Тут мне пришла мне мысль нагреть его феном. Грею, а показания температуры стали опускаться! Даж в минус уходит.
За основу взял STэмовскую библиотеку под stm32f3discovery
Кто-нибудь может это объяснить?
За основу взял 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;
}Кто-нибудь может это объяснить?

