Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 26.05.2016, 00:06  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Сообщение от AR_Favorit Посмотреть сообщение
bass1981, Вы бы не ссылку на пример, а свой проект дали... Мало ли там что)
Он под пятый кейл... И я кода поднакидал... Половину файлов стоит в установчной папке... Нужно стартапы переносить в инклуды и т.д.....

Код:
int32_t WriteCommand_8 (int i2c, uint8_t Command) 
{

  I2C_wr_buf[0] = (uint8_t)(Command);
 // wr_buf[1] = (uint8_t)(data ›› 8);
 // wr_buf[2] = (uint8_t)(data & 0xff);
 
//  memcpy (&wr_buf[2], &buf[0], len);
 
  I2Cdrv-›MasterTransmit (i2c, I2C_wr_buf, 1, false);
  while (I2Cdrv-›GetStatus().busy);
  if (I2Cdrv-›GetDataCount () != ( 1 )) return -1;
  /* Acknowledge polling */
 
  do {
    I2Cdrv-›MasterReceive (i2c, &I2C_wr_buf[0], 1, false);
    while (I2Cdrv-›GetStatus().busy);
  } while (I2Cdrv-›GetDataCount () ‹ 0);
 
  return 0;
}
int32_t Initialize (void) 
{
  I2Cdrv-›Initialize   (NULL);
  I2Cdrv-›PowerControl (ARM_POWER_FULL);
  I2Cdrv-›Control      (ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
  I2Cdrv-›Control      (ARM_I2C_BUS_CLEAR, 0);
  return 1;
}



  HAL_Init();
  SystemClock_Config();
  Initialize();
  задержка
  WriteCommand_8 (254, 5) ;
Реклама:
bass1981 вне форума  
Непрочитано 26.05.2016, 00:16  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Сообщение от bass1981 Посмотреть сообщение
И я кода поднакидал...
Ну и что? Если у вас шина пустая, то МК не получает АСК и всё затыкается. Вам же сказали, разбирайтесь с протоколом. Если повесить на шину пока нечего, а только чтобы посмотреть, то тогда или софтовый с игнором АСК или хардварный с настройкой игнора, иначе и будет затыкаться.
STM32F0 вне форума  
Непрочитано 26.05.2016, 00:22  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,538
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Сообщение от STM32F0 Посмотреть сообщение
Ну и что? Если у вас шина пустая, то МК не получает АСК и всё затыкается. Вам же сказали, разбирайтесь с протоколом. Если повесить на шину пока нечего, а только чтобы посмотреть, то тогда или софтовый с игнором АСК или хардварный с настройкой игнора, иначе и будет затыкаться.
Да был тут уже один такой придурок. Советы давал копипастя из инета. Думал не просекут.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.
Kabron вне форума  
Непрочитано 26.05.2016, 00:28  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Помним этого придурка. В РАМе залоченного СТМ8 ковырялся и копипастил метеостанцию. Ну просто сказочный придурок!
STM32F0 вне форума  
Непрочитано 26.05.2016, 00:31  
AR_Favorit
Почётный гражданин KAZUS.RU
 
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Вот все же, видать, правы, что я ничо не знаю и не понимаю. Я-то, как и ТС, думал, что чтобы до ACK дело дошло, МК должен байт наружу выпихнуть, и даже если этот байт ноль - все равно, на SCL-то тактовые импульсы должны были побывать. А тут оказывается вон оно как. Он уже сразу после START знает, что там нет ничего, и ваще ничего на шины не выдает.

Потому и просил проект, что подозревал "глупый" промах где-то в настройках... Ну там не на той ноге AF включили или что-то подобное. А тут, оказывается, все гораздо сложнее. Тахионный IIC, это вам не хухры-мухры...
AR_Favorit вне форума  
Непрочитано 26.05.2016, 00:36  
Kabron
Почётный гражданин KAZUS.RU
 
Аватар для Kabron
 
Регистрация: 12.11.2004
Адрес: Москва
Сообщений: 8,538
Сказал спасибо: 698
Сказали Спасибо 4,313 раз(а) в 1,977 сообщении(ях)
Kabron на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Сообщение от STM32F0 Посмотреть сообщение
В РАМе залоченного СТМ8 ковырялся и копипастил метеостанцию.
Похоже шарманку серьезно заело
Это ты где видел залоченый РАМ умник? У себя в бошке очевидно? Вот и заедает.
И ведь раз 15 это повторил.
__________________
Я не помогаю. Я провоцирую думать.
Не дай вам Бог плохих контактов.

Последний раз редактировалось Kabron; 26.05.2016 в 00:56.
Kabron вне форума  
Непрочитано 26.05.2016, 00:40  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Вот такая картина на анализаторе при подаче байта адреса.. И глохнет.... До аска не доходит как подметили...

uint32_t busy: 1 Busy flag.
uint32_t mode: 1 Mode: 0=Slave, 1=Master.
uint32_t direction: 1 Direction: 0=Transmitter, 1=Receiver.
uint32_t general_call: 1 General Call indication (cleared on start of next Slave operation)
uint32_t arbitration_lost: 1 Master lost arbitration (cleared on start of next Master operation)
uint32_t bus_error: 1 Bus error detected (cleared on start of next Master/Slave operation)

При запросе статуса...

busy: 1 mode: 1 остальное все по нулям....
Миниатюры:
Нажмите на изображение для увеличения
Название: Новый точечный рисунок.jpg
Просмотров: 0
Размер:	354.6 Кб
ID:	93228  

Последний раз редактировалось bass1981; 26.05.2016 в 02:14.
bass1981 вне форума  
Непрочитано 26.05.2016, 19:47  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Ишибка при инициализации ...

Код:
I2Cdrv-›Control      (ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST);
Возвращает еррор
Код:
  if ((i2c-›info-›flags & I2C_POWER) == 0U) {
    /* I2C not powered */
    return ARM_DRIVER_ERROR;
Срабатывает на данном месте...
хотя
Код:
  I2Cdrv-›Initialize   (NULL);
  I2Cdrv-›PowerControl (ARM_POWER_FULL);
Проходит гладко..
bass1981 вне форума  
Непрочитано 26.05.2016, 20:02  
NewWriter
Заблокирован
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Тот пример кода действует в рамках RTOS. Если у вас RTOS не налажена, то пример и работать то толком не будет.
Для того, чтобы просто разобраться с I2C, в пустом проекте с минимальной конфигой - RM0090 в помощь: стр.708 - описание модуля, стр.714 - порядок действий для запуска в мастер-режиме. Не забываем конфигить пины и включать тактирование периферии
NewWriter вне форума  
Непрочитано 26.05.2016, 20:41  
bass1981
Гражданин KAZUS.RU
 
Регистрация: 01.09.2007
Сообщений: 898
Сказал спасибо: 278
Сказали Спасибо 57 раз(а) в 54 сообщении(ях)
bass1981 на пути к лучшему
По умолчанию Re: I2C как правильно использовать в stm32f4

Сообщение от NewWriter Посмотреть сообщение
Тот пример кода действует в рамках RTOS. Если у вас RTOS не налажена, то пример и работать то толком не будет.
Для того, чтобы просто разобраться с I2C, в пустом проекте с минимальной конфигой - RM0090 в помощь: стр.708 - описание модуля, стр.714 - порядок действий для запуска в мастер-режиме. Не забываем конфигить пины и включать тактирование периферии
USB нормально работает.... Пример который в первом посте(ссылка), был переделан под I2C2 ... И заработал.... Ну пока окнчательно не знаю как он заработал, первым байтом плюеться и его советуют только для проверки использовать... Точно щас у меня нервов не хватит и займусь кощунством... Это запущу ногодрыг...

Причем
Код:
       /* Ready for operation */
      i2c-›info-›flags |= I2C_POWER;
Проходит отладчиком в функции  I2Cdrv-›PowerControl (ARM_POWER_FULL);

И потом в I2Cdrv-›Control      (ARM_I2C_BUS_SPEED, ARM_I2C_BUS_SPEED_FAST)

Вылетает на первой проверке...

  if ((i2c-›info-›flags & I2C_POWER) == 0U) {
    /* I2C not powered */
    return ARM_DRIVER_ERROR;
  }
Так попробуем закоментировать данную проверку..

А первый байт пошел ))))
Только для этого пришлось исправить драйвер....)))

Последний раз редактировалось bass1981; 26.05.2016 в 21:14.
bass1981 вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ШИМ и пик будем их дружить, ток как правильно эт сделать чтобы без залета... stopol Электроника - это просто 40 18.02.2011 16:04
Можно использовать в AVR-ах (MOSI-MISO-SCK) как порты? Сбои? gip Микроконтроллеры, АЦП, память и т.д 47 26.05.2008 05:17
Обмен МК со Slave устройствами по I2C EugVor Микроконтроллеры, АЦП, память и т.д 3 25.05.2006 11:39
Использование одной библиотеки I2C на разные порты vovan_zh Микроконтроллеры, АЦП, память и т.д 1 04.04.2006 12:16


Часовой пояс GMT +4, время: 08:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot