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

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

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

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

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

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


 
Опции темы

Изучаем STM32 Cortex M3

Непрочитано 22.02.2011, 14:12  
DanilinSA
Почётный гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,801
Сказал спасибо: 133
Сказали Спасибо 1,152 раз(а) в 549 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

I2C_SLAVE_ADDRESS7 - просто адрес. Обычно где-то рядом лежит строка типа:
Код:
#define I2C_SLAVE_ADDRESS7      0xA0
Хотя мысли были по этому поводу. Потому и заменил на константу.

Внимание !!!

Нашел ошибку в stm32f10x_i2c.c версии V3.4.0 от 10/15/2010 !

Функция void I2C_Init(I2C_TypeDef* I2Cx, I2C_InitTypeDef* I2C_InitStruct)
неверно заполняет регистр I2C_OAR1 - а конкретно поле ADD
Поясняю: в 10-битном режиме адрес пишется в биты [0..9], а в 7-битном - в биты [1..7].
а в библиотеке это делается так:
I2Cx-›OAR1 = (I2C_InitStruct-›I2C_AcknowledgedAddress | I2C_InitStruct-›I2C_OwnAddress1);

Т.е. адрес тупо шлепается с 0 бита без всякой проверки режима адресации.

Т.е. при формировании адреса схема ждет совпадения сгенерированного одреса и адреса OAR1. После чего формирует флаги. А так как адрес в OAR1 воткнут с 0 бита а не с 1 (т.е. сдвинут на 1 разряд) то флаги правильной генерации адреса никогда не подымутся. И всё висит до таймаута.
Реклама:

Последний раз редактировалось DanilinSA; 22.02.2011 в 16:11.
DanilinSA вне форума  
Непрочитано 22.02.2011, 18:52  
akimych
Прописка
 
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
akimych на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Выбор прием/передача отличается для 7бит и 10бит адреса. При 7бит адресации младший разряд определяет направление передачи, собственно 7бит адрес обычно и подразумевает 7 старших битов + 1 младший направление (отправляется-то 8 бит).

Но регистр OAR вообще-то используется в режиме слейва.
А что, после этого изменения всё заработало?
akimych вне форума  
Непрочитано 22.02.2011, 21:19  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 328
Сказал спасибо: 104
Сказали Спасибо 106 раз(а) в 70 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Давно получил платку Дискавери. Наконец дошли руки до дармовщины, да вот незадача - с иаром флеш нормально прошивается, а с кейлом не очень.Вернее вообще не шьется.
Может кто глянет, что у меня не так с настройками.







Последний раз редактировалось Djakovskij; 22.02.2011 в 21:56.
Djakovskij вне форума  
Непрочитано 23.02.2011, 12:18  
akimych
Прописка
 
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
akimych на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Зачем постить 2 раза одно и тоже? По скринам этим ничего не скажешь.
akimych вне форума  
Непрочитано 23.02.2011, 23:14  
-jonns-
Временная регистрация
 
Регистрация: 15.02.2008
Адрес: Болгария
Сообщений: 59
Сказал спасибо: 37
Сказали Спасибо 28 раз(а) в 11 сообщении(ях)
-jonns- на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Djakovskij Посмотреть сообщение
Может кто глянет, что у меня не так с настройками.
Может ето Вам поможет.
-jonns- вне форума  
Сказали "Спасибо" -jonns-
Djakovskij (24.02.2011)
Непрочитано 24.02.2011, 01:07  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 328
Сказал спасибо: 104
Сказали Спасибо 106 раз(а) в 70 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

To -jonns-
Большое человеческое спасибо! Как бабка пошептала.
To akimych
Цитата:
Зачем постить 2 раза одно и тоже? По скринам этим ничего не скажешь.
Если нечего сказать то не стоит себя утруждать.
Djakovskij вне форума  
Непрочитано 24.02.2011, 16:49  
DanilinSA
Почётный гражданин KAZUS.RUN
 
Регистрация: 25.11.2010
Адрес: г. Дзержинск Нижегородская обл.
Сообщений: 1,801
Сказал спасибо: 133
Сказали Спасибо 1,152 раз(а) в 549 сообщении(ях)
DanilinSA на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от akimych Посмотреть сообщение
...
А что, после этого изменения всё заработало?
Заработало. Что весело - адрес в I2C1_DR пишется без учете бита направления. Короче там есть пара неочевидных моментов.

I2C_Ack действительно нужно в симулятре исскуственно дергать. Написал простенький скрипт симулятра, который иммитировал чип I2C памяти (скопировал с ихнего форума). И всё заработало.
И функции все правильно заработали, а евенты срабатывают как нужно, и флаги нужные в нужых местах подымаются. Всё работет как часы, легко и непринужденно. На штатных функциях библиотеки (не ворчать - обьем и скорость мне не критичны, а С я очень плохо знаю).

За это время подучил С, регистры I2C выучил до состояни "наизусть".
При помощи штатных библиотек всё пишется легко и непринужденно
DanilinSA вне форума  
Непрочитано 26.02.2011, 00:17  
akimych
Прописка
 
Регистрация: 02.01.2011
Сообщений: 159
Сказал спасибо: 8
Сказали Спасибо 32 раз(а) в 28 сообщении(ях)
akimych на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Цитата:
Заработало
Сейчас глянул свои старые исходники с i2c, нормально работают под симулятором.
I2C_OwnAddress1 вообще = 0
Когда разбирался, помню, что заработало не сразу. Там еще еррата проявилась, если FSMC включен, то он конфликтует по выводам с I2C, ест-но ничего не работает.

Цитата:
Что весело - адрес в I2C1_DR пишется без учете бита направления.
Ну в I2C_Send7bitAddress бит направления берется из параметра I2C_Direction.
Но адрес все равно должен быть в 7:1 битах.


Вчера наткнулся на одну фишку CRC модуля в STM32. Как пишут в ДШ, операция записи в CRC_DR не завершиться, пока не сосчитается CRC. С этим спорить не буду, похоже так и есть. Но вот запись в регистр CRC_CR таким свойством не обладает и если написать
CRC-›CR = CRC_CR_RESET;
CRC-›DR = ...;
в коде подряд, то будет косяк. Надо добавлять короткую задержку.
При использовании библиотечных функций будет зависеть от компилятора, если он не сделает функции инлайном, то должно работать.
akimych вне форума  
Непрочитано 01.03.2011, 01:35  
ua3nbw
Прохожий
 
Регистрация: 04.02.2011
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
ua3nbw на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Поcоветуйте, как оживить STM32 Discovery
при прошивке
STM32 ST-Link Utility выдает: No target connected

Keil при прошивке пишет: Flash Download Failed

Съемный диск c тремя ярлыками, из win7 виден.

Запорол этим: AN3174-stm32_rc5_receiver

спасибо.


-------------------------------------------------


С помощью ST Visual Programmer починил.

Ура!

--------------------------------------------------

Последний раз редактировалось ua3nbw; 01.03.2011 в 02:58.
ua3nbw вне форума  
Непрочитано 01.03.2011, 22:28  
MasterMushi
Вид на жительство
 
Регистрация: 14.10.2009
Сообщений: 338
Сказал спасибо: 35
Сказали Спасибо 92 раз(а) в 73 сообщении(ях)
MasterMushi на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Кто-нибудь подскажет как заставить шестой EWARM принять стартап?

Сейчас линкер выпадает с ошибкой
Error[Li005]: no definition for "__iar_program_start" [program entry]
Error[Li005]: no definition for "__iar_program_start" [referenced from Z:\PROJECTS\PROJECTS\!ARM_PROJECTS\!STM_Discovery_ Template_v1\
Debug\Obj\startup_stm32f10x_md_vl.o]

Погуглил но ответа так и не нашел вменяемого. Все отписываются что надо переписывать стартап. Как куда - никакого ответа или рекомендаций.
__________________
Найди путь или проложи сам!
MasterMushi вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


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


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.