k155la3 26 10 февраля, 2016 Опубликовано 10 февраля, 2016 (изменено) · Жалоба Как ВЫЧИСЛЯЕТСЯ частота SCK для USCI в MSP430F5438a То, что расписано в док-ии SLAU208o (38.3.5 I2C Clock Generation and Synchronization) сопоставить с реалиями мне не удалось. Тактирование - от кварца 25 MHz --> SMCLK --> USCI Наличие SMCLK именно 25 МГц проверялось осцилографом. при BR0=32 BR1=0 частота SCK 533-551 kHz ( SMCLK = 25 MHz) уменьшаем SMCLK в 2 раза при BR0=32 BR1=0 частота SCK 320 kHz ( SMCLK = 12.5 MHz) Похоже на то, что работает не обычный делитель, а CCR. На бл-схеме Figure 38-1. USCI Block Diagram – I2C Mode упоминается prescaler / devider. Есть док по этой теме, где это расписано ? ps - для USART даны ф-лы пересчета ( 36.3.10 Setting a Baud Rate ). Использовать их и для I2C ? Изменено 10 февраля, 2016 пользователем k155la3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба Prescaler/Divider тупо - ДПКД. UCxBRx как раз и задаёт коэффициент Prescaler/Divider, а 25МГц / 32 это ~780кГц; 12.5МГц/32 ~390кГц. "Похоже на то, что работает не обычный делитель, а CCR." - Работает что? "Как ВЫЧИСЛЯЕТСЯ частота SCK для USCI в MSP430F5438a" - "The maximum bit clock that can be used in single master mode is fBRCLK/4. In multi-master mode, the maximum bit clock is fBRCLK/8." стр. 1012 "для USART даны ф-лы пересчета ( 36.3.10 Setting a Baud Rate ). Использовать их и для I2C ?" - Нет, конечно. УАПП каким боком? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба UCxBRx как раз и задаёт коэффициент Prescaler/Divider, а 25МГц / 32 это ~780кГц; 12.5МГц/32 ~390кГц. У меня получается при коэф. BR0 = 32 ( 0x20 ) частота именно 533-551 kHz В примерах у Ti: UCB0BR0 = 12; // fSCL = SMCLK/12 = ~100kHz И что, тильда означает +/- 300 kHz ? "Похоже на то, что работает не обычный делитель, а CCR." - Работает что? счетчик с 2 CCR - одни настроен на 4, другой на BR1_BR0. В общем у меня фантазия закончилась. Понимаю, что для I2C точная установка частоты не требуется. Не парить моск ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба "счетчик с 2 CCR - одни настроен на 4, другой на BR1_BR0." - Гениально! (: К 16-разрядному ДПКД только CaptureCompare (я правильно понимаю ?) не хватает (: "Не парить моск ?" - Парить, но в разумных пределах. "У меня получается при коэф. BR0 = 32 ( 0x20 ) частота именно 533-551 kHz" - значит BRCLK не 25МГц. "В примерах у Ti: UCB0BR0 = 12; // fSCL = SMCLK/12 = ~100kHz И что, тильда означает +/- 300 kHz ? " - Практически. То, что в Unified Clock System (UCS) SMCLK сама получается из делителя с разнообразными (1, 2, 4 .. 32) коэффициентами, вас почему не смущает? (: Вообще, эти вещи под JTAGом в IARе без программирования можно проверять: руками задавать требуемые биты, коэффициенты и тут же видеть результат. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 26 10 февраля, 2016 Опубликовано 10 февраля, 2016 · Жалоба . . . . Вообще, эти вещи под JTAGом в IARе без программирования можно проверять: руками задавать требуемые биты, коэффициенты и тут же видеть результат. Я так и делаю :) Прогнал все коэф. деления по степеням 2, для 2 частот SMCLK - 25 и 12.5 MHz. Пока надо это дело прекращать. Будет время - разберемся. Для работы установил "среднюю" для I2C частоту около 176 кГц. Подобный вопрос задавался на форуме Ti - но внятного ответа (можно сказать даже ответа ВООБЩЕ) в тех постах, что я смотрел, нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться