Например TDA7294

Форум РадиоКот • Просмотр темы - STM32. Датчик AM2321
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 16:18:10

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32. Датчик AM2321
СообщениеДобавлено: Чт дек 29, 2016 17:12:40 
Родился
Аватар пользователя

Зарегистрирован: Ср ноя 25, 2015 18:05:40
Сообщений: 15
Рейтинг сообщения: 0
Всем доброго времени суток.Совсем недавно я начал играться с контроллером STM32F407VG и вдоволь намигавшись со светодиодами было принято решение сделать что-то поинтереснее и для этих целей был куплен AM231.И в самом начале общения с ним начались проблемы. В технической документации на датчик сказано что для того чтобы завелся датчик надо подать по шине сигнал, как на картинке

Вложение:
nack.png [89.38 KiB]
Скачиваний: 407


При попытке повторения данного сигнала получается то, что показано на вот этой картинке

Вложение:
logic.png [10.01 KiB]
Скачиваний: 401


Тобишь, при отправке 7 битного адреса выставляется NACK и держится. Как сделать так чтобы у нас выставился NACK и линия SDA ушла в нуль. Пробовал через стандартные функции GPIO_SetBits, GPIO_ResetBits,но все тсчетно. Код программы ниже. Заранее Спасибо. Ну очень прям хочется завести его)

void Init_I2C_1(void)
{

GPIO_InitTypeDef GPIO_I2C_init;
I2C_InitTypeDef I2C_init;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);

GPIO_I2C_init.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
GPIO_I2C_init.GPIO_Mode = GPIO_Mode_AF;
GPIO_I2C_init.GPIO_OType = GPIO_OType_OD;
GPIO_I2C_init.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_I2C_init.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOB, &GPIO_I2C_init);

GPIO_PinAFConfig(GPIOB, GPIO_PinSource6, GPIO_AF_I2C1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource7, GPIO_AF_I2C1);

I2C_init.I2C_ClockSpeed = 100000;
I2C_init.I2C_Mode = I2C_Mode_I2C;
I2C_init.I2C_Ack = I2C_Ack_Enable;
I2C_init.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_init.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_init.I2C_OwnAddress1 = 0x14;

I2C_Init(I2C1, &I2C_init);
I2C_Cmd(I2C1, ENABLE);

}


int main(void)
{
Init_I2C_1();
SysTick_Config(SystemCoreClock/1000);

while(1)
{
I2C_GenerateSTART(I2C1, ENABLE);
while(I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)==ERROR){}
I2C_Send7bitAddress(I2C1, 0xB8, I2C_Direction_Transmitter);
delay_ms(1);
I2C_GenerateSTOP(I2C1, ENABLE);
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Датчик AM2321
СообщениеДобавлено: Чт янв 05, 2017 07:15:26 
Друг Кота
Аватар пользователя

Карма: 74
Рейтинг сообщений: 607
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3715
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Radist228 писал(а):
Как сделать так чтобы у нас выставился NACK и линия SDA ушла в нуль.

А зачем? Эта линия контролируется датчиком. Задержка в 1 мс возможна из-за того, что датчик совершает "clock-stretching" по какой-то причине и драйвер I2C в MK ждёт пока датчик отпустит линию SCL. Вообще, то, что он не отзывается на свой адрес уже плохо. Уверены, что датчик рабочий и правильно подключен к МК?

В логическом анализаторе для правильного распознавания сигналов Старт/Стоп следует сконфигурировать "triggering" так, что на линии SDA фолжно стоять -f, а на линии SCL высокий уровень.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32. Датчик AM2321
СообщениеДобавлено: Чт янв 05, 2017 07:53:03 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Radist228, Если верить данным с вашего логического анализатора, сразу после условия START - фронт по SDA налезает на спад SCL. Это может быть воспринято как условие STOP.
Изображение
СпойлерИзображение


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: DENIS451 и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y