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

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

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

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

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

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


 
Опции темы
Непрочитано 27.01.2011, 01:39  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Теперь смотрим структуру регистров I2C :


Код:
typedef struct
{
  __IO uint16_t CR1;
  uint16_t  RESERVED0;
  __IO uint16_t CR2;
  uint16_t  RESERVED1;
  __IO uint16_t OAR1;
  uint16_t  RESERVED2;
  __IO uint16_t OAR2;
  uint16_t  RESERVED3;
  __IO uint16_t DR;
  uint16_t  RESERVED4;
  __IO uint16_t SR1;
  uint16_t  RESERVED5;
  __IO uint16_t SR2;
  uint16_t  RESERVED6;
  __IO uint16_t CCR;
  uint16_t  RESERVED7;
  __IO uint16_t TRISE;
  uint16_t  RESERVED8;
} I2C_TypeDef;

И определение битов


Код:
/**************************************************  ****************************/
/*                                                                            */
/*                      Inter-integrated Circuit Interface                    */
/*                                                                            */
/**************************************************  ****************************/

/*******************  Bit definition for I2C_CR1 register  ********************/
#define  I2C_CR1_PE                          ((uint16_t)0x0001)            /*!‹Peripheral Enable */
#define  I2C_CR1_SMBUS                       ((uint16_t)0x0002)            /*!‹SMBus Mode */
#define  I2C_CR1_SMBTYPE                     ((uint16_t)0x0008)            /*!‹SMBus Type */
#define  I2C_CR1_ENARP                       ((uint16_t)0x0010)            /*!‹ARP Enable */
#define  I2C_CR1_ENPEC                       ((uint16_t)0x0020)            /*!‹PEC Enable */
#define  I2C_CR1_ENGC                        ((uint16_t)0x0040)            /*!‹General Call Enable */
#define  I2C_CR1_NOSTRETCH                   ((uint16_t)0x0080)            /*!‹Clock Stretching Disable (Slave mode) */
#define  I2C_CR1_START                       ((uint16_t)0x0100)            /*!‹Start Generation */
#define  I2C_CR1_STOP                        ((uint16_t)0x0200)            /*!‹Stop Generation */
#define  I2C_CR1_ACK                         ((uint16_t)0x0400)            /*!‹Acknowledge Enable */
#define  I2C_CR1_POS                         ((uint16_t)0x0800)            /*!‹Acknowledge/PEC Position (for data reception) */
#define  I2C_CR1_PEC                         ((uint16_t)0x1000)            /*!‹Packet Error Checking */
#define  I2C_CR1_ALERT                       ((uint16_t)0x2000)            /*!‹SMBus Alert */
#define  I2C_CR1_SWRST                       ((uint16_t)0x8000)            /*!‹Software Reset */

/*******************  Bit definition for I2C_CR2 register  ********************/
#define  I2C_CR2_FREQ                        ((uint16_t)0x003F)            /*!‹FREQ[5:0] bits (Peripheral Clock Frequency) */
#define  I2C_CR2_FREQ_0                      ((uint16_t)0x0001)            /*!‹Bit 0 */
#define  I2C_CR2_FREQ_1                      ((uint16_t)0x0002)            /*!‹Bit 1 */
#define  I2C_CR2_FREQ_2                      ((uint16_t)0x0004)            /*!‹Bit 2 */
#define  I2C_CR2_FREQ_3                      ((uint16_t)0x0008)            /*!‹Bit 3 */
#define  I2C_CR2_FREQ_4                      ((uint16_t)0x0010)            /*!‹Bit 4 */
#define  I2C_CR2_FREQ_5                      ((uint16_t)0x0020)            /*!‹Bit 5 */

#define  I2C_CR2_ITERREN                     ((uint16_t)0x0100)            /*!‹Error Interrupt Enable */
#define  I2C_CR2_ITEVTEN                     ((uint16_t)0x0200)            /*!‹Event Interrupt Enable */
#define  I2C_CR2_ITBUFEN                     ((uint16_t)0x0400)            /*!‹Buffer Interrupt Enable */
#define  I2C_CR2_DMAEN                       ((uint16_t)0x0800)            /*!‹DMA Requests Enable */
#define  I2C_CR2_LAST                        ((uint16_t)0x1000)            /*!‹DMA Last Transfer */

/*******************  Bit definition for I2C_OAR1 register  *******************/
#define  I2C_OAR1_ADD1_7                     ((uint16_t)0x00FE)            /*!‹Interface Address */
#define  I2C_OAR1_ADD8_9                     ((uint16_t)0x0300)            /*!‹Interface Address */

#define  I2C_OAR1_ADD0                       ((uint16_t)0x0001)            /*!‹Bit 0 */
#define  I2C_OAR1_ADD1                       ((uint16_t)0x0002)            /*!‹Bit 1 */
#define  I2C_OAR1_ADD2                       ((uint16_t)0x0004)            /*!‹Bit 2 */
#define  I2C_OAR1_ADD3                       ((uint16_t)0x0008)            /*!‹Bit 3 */
#define  I2C_OAR1_ADD4                       ((uint16_t)0x0010)            /*!‹Bit 4 */
#define  I2C_OAR1_ADD5                       ((uint16_t)0x0020)            /*!‹Bit 5 */
#define  I2C_OAR1_ADD6                       ((uint16_t)0x0040)            /*!‹Bit 6 */
#define  I2C_OAR1_ADD7                       ((uint16_t)0x0080)            /*!‹Bit 7 */
#define  I2C_OAR1_ADD8                       ((uint16_t)0x0100)            /*!‹Bit 8 */
#define  I2C_OAR1_ADD9                       ((uint16_t)0x0200)            /*!‹Bit 9 */

#define  I2C_OAR1_ADDMODE                    ((uint16_t)0x8000)            /*!‹Addressing Mode (Slave mode) */

/*******************  Bit definition for I2C_OAR2 register  *******************/
#define  I2C_OAR2_ENDUAL                     ((uint8_t)0x01)               /*!‹Dual addressing mode enable */
#define  I2C_OAR2_ADD2                       ((uint8_t)0xFE)               /*!‹Interface address */

/********************  Bit definition for I2C_DR register  ********************/
#define  I2C_DR_DR                           ((uint8_t)0xFF)               /*!‹8-bit Data Register */

/*******************  Bit definition for I2C_SR1 register  ********************/
#define  I2C_SR1_SB                          ((uint16_t)0x0001)            /*!‹Start Bit (Master mode) */
#define  I2C_SR1_ADDR                        ((uint16_t)0x0002)            /*!‹Address sent (master mode)/matched (slave mode) */
#define  I2C_SR1_BTF                         ((uint16_t)0x0004)            /*!‹Byte Transfer Finished */
#define  I2C_SR1_ADD10                       ((uint16_t)0x0008)            /*!‹10-bit header sent (Master mode) */
#define  I2C_SR1_STOPF                       ((uint16_t)0x0010)            /*!‹Stop detection (Slave mode) */
#define  I2C_SR1_RXNE                        ((uint16_t)0x0040)            /*!‹Data Register not Empty (receivers) */
#define  I2C_SR1_TXE                         ((uint16_t)0x0080)            /*!‹Data Register Empty (transmitters) */
#define  I2C_SR1_BERR                        ((uint16_t)0x0100)            /*!‹Bus Error */
#define  I2C_SR1_ARLO                        ((uint16_t)0x0200)            /*!‹Arbitration Lost (master mode) */
#define  I2C_SR1_AF                          ((uint16_t)0x0400)            /*!‹Acknowledge Failure */
#define  I2C_SR1_OVR                         ((uint16_t)0x0800)            /*!‹Overrun/Underrun */
#define  I2C_SR1_PECERR                      ((uint16_t)0x1000)            /*!‹PEC Error in reception */
#define  I2C_SR1_TIMEOUT                     ((uint16_t)0x4000)            /*!‹Timeout or Tlow Error */
#define  I2C_SR1_SMBALERT                    ((uint16_t)0x8000)            /*!‹SMBus Alert */

/*******************  Bit definition for I2C_SR2 register  ********************/
#define  I2C_SR2_MSL                         ((uint16_t)0x0001)            /*!‹Master/Slave */
#define  I2C_SR2_BUSY                        ((uint16_t)0x0002)            /*!‹Bus Busy */
#define  I2C_SR2_TRA                         ((uint16_t)0x0004)            /*!‹Transmitter/Receiver */
#define  I2C_SR2_GENCALL                     ((uint16_t)0x0010)            /*!‹General Call Address (Slave mode) */
#define  I2C_SR2_SMBDEFAULT                  ((uint16_t)0x0020)            /*!‹SMBus Device Default Address (Slave mode) */
#define  I2C_SR2_SMBHOST                     ((uint16_t)0x0040)            /*!‹SMBus Host Header (Slave mode) */
#define  I2C_SR2_DUALF                       ((uint16_t)0x0080)            /*!‹Dual Flag (Slave mode) */
#define  I2C_SR2_PEC                         ((uint16_t)0xFF00)            /*!‹Packet Error Checking Register */

/*******************  Bit definition for I2C_CCR register  ********************/
#define  I2C_CCR_CCR                         ((uint16_t)0x0FFF)            /*!‹Clock Control Register in Fast/Standard mode (Master mode) */
#define  I2C_CCR_DUTY                        ((uint16_t)0x4000)            /*!‹Fast Mode Duty Cycle */
#define  I2C_CCR_FS                          ((uint16_t)0x8000)            /*!‹I2C Master Mode Selection */

/******************  Bit definition for I2C_TRISE register  *******************/
#define  I2C_TRISE_TRISE                     ((uint8_t)0x3F)               /*!‹Maximum Rise Time in Fast/Standard mode (Master mode) */
Реклама:
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 27.01.2011, 01:41  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию

Смотрим по функции инициализации в какой регистр/бит что записывается .
И переписываем без либ .
Обрати внимание на имена регистров/битов .
Модуль_регистр_бит.
Весьма удобно .

Сообщение от gromovi Посмотреть сообщение
не хочу юзать кейловские библиотеки. хочу чтоб сам все ручками
Язык опрежает мозг , дочитай сначала ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 27.01.2011 в 01:50.
dosikus вне форума  
Непрочитано 27.01.2011, 01:48  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от gromovi Посмотреть сообщение
не хочу юзать кейловские библиотеки. хочу чтоб сам все ручками по даташиту.
Дык... от чего-то отталкиваться то нужно, даташиты не мечта пикомана, а в библах можно нарыть понимание что к чему, а потом уже ручками и ножками по даташиту. Просто надо привыкнуть к новому камню с другой архитектурой.
st_1 вне форума  
Сказали "Спасибо" st_1
dosikus (27.01.2011)
Непрочитано 27.01.2011, 01:50  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,018
Сказал спасибо: 936
Сказали Спасибо 2,270 раз(а) в 1,565 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

st_1, Как всегда прав...

Стас , ну чего как всегда ?
Лапками помахали , теперь SPI с Ls020 ...
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 27.01.2011 в 01:54.
dosikus вне форума  
Непрочитано 27.01.2011, 02:03  
st_1
Заблокирован
 
Регистрация: 26.12.2009
Сообщений: 3,124
Сказал спасибо: 116
Сказали Спасибо 867 раз(а) в 614 сообщении(ях)
st_1 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
Стас , ну чего как всегда ?
Лапками помахали , теперь SPI с Ls020 ...
Эта святое.

SPI ещё никто не отменял.
st_1 вне форума  
Непрочитано 27.01.2011, 04:36  
Murka-MakMur
Вид на жительство
 
Аватар для Murka-MakMur
 
Регистрация: 05.09.2007
Адрес: Новороссия ЛНР Рубежное -> РФ Калуга
Сообщений: 360
Сказал спасибо: 10
Сказали Спасибо 73 раз(а) в 58 сообщении(ях)
Murka-MakMur на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вот типа документашка по Cortex_ам с www.gaw.ru
__________________
Политика России будет выглядеть неоднозначной до тех пор, пока не будет решен исход битвы.
Чем больше слёз тем больше облегчения, в слезах и заключается лечение.
Не зли меня
Murka-MakMur вне форума  
Эти 4 пользователя(ей) сказали Спасибо Murka-MakMur за это сообщение:
a-fisher (16.02.2011), gromovi (27.01.2011), serg_42 (26.06.2014), tedal (30.10.2013)
Непрочитано 27.01.2011, 09:57  
ut1wpr
Почётный гражданин KAZUS.RU
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Serega_B Посмотреть сообщение
НЕ ТАК!
Ну нет там такого глюка! Иначе я бы уже три раза повесился, передергивая питание у целевого контроллера (STM32F103RB). Специально заказал халявный Дисковери32 для того чтобы проверить, но он пока не приехал. Пользуюсь Дисковери, купленным в DIgi-Key_е 9/30/2010 5:14:09 AM. Т.е. если бы там был глюк - он еще не устранен. Из ПО стоИт IAR 6.10.1.
Спасибо. Не могу вам не верить. Я вчера созвонился с коллегой из Минска, у него тоже (вроде) глюков не обнаружено. Кейл 4.14 у него. Однако он все делал в режиме дебаггинга и сегодня попробует простую загрузку. Раздобуду 4.14 и тоже потренируюсь во всех режимах. На всякий случай заказал еще один комплект, т.к. у коллеги более свежая версия firmvare на лейбачке с обратной стороны ПП написана. У меня M8913-C00. Хотя, как вы говорите, "возраст" не имеет значения... Подожду, если придет второй, проверю еще раз. У меня одинаковое поведение и под ИАР и под Кейл.
ut1wpr вне форума  
Непрочитано 27.01.2011, 10:26  
Loole
Вид на жительство
 
Регистрация: 11.05.2005
Адрес: Питер
Сообщений: 425
Сказал спасибо: 47
Сказали Спасибо 72 раз(а) в 59 сообщении(ях)
Loole на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

На самом деле на наклейке написано MB913-С00. Неадекватное поведение Дискавери описано в самом начале ветки про халяву и не устранено до сих пор. Проверяем здесь обновления линка.
Loole вне форума  
Сказали "Спасибо" Loole
ut1wpr (27.01.2011)
Непрочитано 27.01.2011, 11:18  
Serega_B
Прописка
 
Регистрация: 09.11.2010
Сообщений: 102
Сказал спасибо: 4
Сказали Спасибо 28 раз(а) в 22 сообщении(ях)
Serega_B на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от ut1wpr Посмотреть сообщение
у коллеги более свежая версия firmvare на лейбачке с обратной стороны ПП написана. У меня M8913-C00.
О-о-о, вечером обязательно посмотрю и отпишу.

Еще вспомнил, что на Электрониксе в папке с IAR для STM8 лежит какой-то апдейт для ST-Link. Только я на Дисковери32 его точно не ставил. Про Дисковери8 точно не скажу, не помню.
Serega_B вне форума  
Непрочитано 27.01.2011, 11:49  
PavelV
Прохожий
 
Регистрация: 18.02.2007
Сообщений: 4
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 2 сообщении(ях)
PavelV на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Изучил вопрос подробнее, прошивку все-таки можно стартовать без передергивания питания. Но это надо делать вручную - для ST-Link Utility надо перейти в меню Target › MCU Core и нажать кнопку Run. Почему-то нельзя настроить автоматический запуск.

Статью свою дополнил.
PavelV вне форума  
 

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

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

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, время: 15:59.


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