vlad_new 1 14 сентября, 2013 Опубликовано 14 сентября, 2013 · Жалоба Потерял доку, где были описаны регистры и их адреса с колибровочными зоводскими значениями для VREF и температуры. Однодневный поиск по ST почему то ничего не дал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 14 сентября, 2013 Опубликовано 14 сентября, 2013 · Жалоба Потерял доку, где были описаны регистры и их адреса с колибровочными зоводскими значениями для VREF и температуры. Однодневный поиск по ST почему то ничего не дал. Может, поискать в семействе STM32F3?... DS на STM32F372/373 6.3.20 Temperature sensor characteristics 6.3.21 VBAT monitoring characteristics 6.3.22 Timer characteristics The parameters given in Table 68 are guaranteed by design. Refer to Section 6.3.14: I/O port characteristics for details on the input/output alternate function characteristics (output compare, input capture, external clock, PWM output). Table 65. Temperature sensor calibration values Calibration value name Description Memory address TS_CAL1 TS ADC raw data acquired at temperature of 30 °C, VDDA= 3.3 V 0x1FFF F7B8 - 0x1FFF F7B9 TS_CAL2 TS ADC raw data acquired at temperature of 110 °C VDDA= 3.3 V 0x1FFF F7C2 - 0x1FFF F7C3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vlad_new 1 14 сентября, 2013 Опубликовано 14 сентября, 2013 (изменено) · Жалоба На STM32F4 То же было. Похоже они новый мэнуал выложили и тут же убрали. Я оттуда успел только калибровку Vref выдрать. 0x1FFF7A2A - значение short при 3,3V и температуре в 30С. Проверил. Не совпадает F3 и F4:( Нашел. Для F4 в электрических параметрах на STM32F427xx-STM32F429xx, хотя во всех F4xx присутствует :) VREFIN_CAL Raw data acquired at temperature of 30 °C VDDA = 3.3 V 0x1FFF 7A2A - 0x1FFF 7A2B TS_CAL1 TS ADC raw data acquired at temperature of 30 °C, VDDA= 3.3 V 0x1FFF 7A2C - 0x1FFF 7A2D TS_CAL2 TS ADC raw data acquired at temperature of 110 °C, VDDA= 3.3 V 0x1FFF 7A2E - 0x1FFF 7A2F Изменено 14 сентября, 2013 пользователем vlad_new Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
mantech 48 14 сентября, 2013 Опубликовано 14 сентября, 2013 · Жалоба На STM32F4 То же было. Похоже они новый мэнуал выложили и тут же убрали. Погугли RM0090 reference manual там все должно быть. Сам его долго искал... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 14 сентября, 2013 Опубликовано 14 сентября, 2013 · Жалоба Погугли RM0090 reference manual там все должно быть. Сам его долго искал... Обычно такое (конкретные значения) указывают в DS. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izolenta 0 1 апреля, 2019 Опубликовано 1 апреля, 2019 · Жалоба On 9/14/2013 at 10:07 PM, vlad_new said: На STM32F4 То же было. Похоже они новый мэнуал выложили и тут же убрали. Я оттуда успел только калибровку Vref выдрать. 0x1FFF7A2A - значение short при 3,3V и температуре в 30С. Проверил. Не совпадает F3 и F4:( Нашел. Для F4 в электрических параметрах на STM32F427xx-STM32F429xx, хотя во всех F4xx присутствует :) VREFIN_CAL Raw data acquired at temperature of 30 °C VDDA = 3.3 V 0x1FFF 7A2A - 0x1FFF 7A2B TS_CAL1 TS ADC raw data acquired at temperature of 30 °C, VDDA= 3.3 V 0x1FFF 7A2C - 0x1FFF 7A2D TS_CAL2 TS ADC raw data acquired at temperature of 110 °C, VDDA= 3.3 V 0x1FFF 7A2E - 0x1FFF 7A2F Кто знает, почему для хранения калибровочных данных используется диапазон адресов 0x1FFF 7A2C - 0x1FFF 7A2D, в двух регистрах это значение хранится что-ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 1 апреля, 2019 Опубликовано 1 апреля, 2019 · Жалоба 51 минуту назад, izolenta сказал: Кто знает, почему для хранения калибровочных данных используется диапазон адресов 0x1FFF 7A2C - 0x1FFF 7A2D, в двух регистрах это значение хранится что-ли? А сколько разрядов в АЦП и сколько в байте? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izolenta 0 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 18 hours ago, ViKo said: А сколько разрядов в АЦП и сколько в байте? Я, по крайней мере, использую в АЦП 12 разрядов, ну а в байте их, конечно же, 8)) Хотите сказать, что это как-то связано с организацией памяти в STM32 ?, правда не читал об этом еще. Я представляю, что раз 32 разрядные МК, то и по адресу располагается 32-разрядный регистр, включая, зарезервированный системой биты. В примерах, которые находил в инете, хоть и используют 12 разрядный АЦП, но ссылаются по младшему адресу из двух, зачем нужен тогда второй? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 19 минут назад, izolenta сказал: Хотите сказать, что это как-то связано с организацией памяти в STM32 Во всех микроконтроллерах, памяти и вообще адресуются именно байты. P.S. Если не во всех, то в большинстве. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izolenta 0 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 2 hours ago, ViKo said: Во всех микроконтроллерах, памяти и вообще адресуются именно байты. P.S. Если не во всех, то в большинстве. Попробовал с разными типами данных и выводил по UART 1) #define TS_cal_110 ((uint8_t*) 0x1FF800FE) sprintf (txt_buf, "TS_cal_110=%d ", *TS_cal_110); в терминалку вывелось значение 87 (согласен) 2) #define TS_cal_110 ((uint16_t*) 0x1FF800FE) sprintf (txt_buf, "TS_cal_110=%d ", *TS_cal_110); в терминалку вывелось значение 855 ( как такое может быть, если по адресу может храниться только 1 байт, десятичное число до 255) 3) #define TS_cal_110 ((uint32_t*) 0x1FF800FE) sprintf (txt_buf, "TS_cal_110=%d ", *TS_cal_110); в терминалку ничего не вывелось ( ???) Чего я не понимаю? Объясните, пожалуйста, если знаете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 41 минуту назад, izolenta сказал: как такое может быть, если по адресу может храниться только 1 байт А вы читаете и выводите не байт, а 16 битовое число, начинающееся с указанного адреса (uint16_t*) 0x1FF800FE. В третьем случае, скорее всего, невозможно прочитать 4-байтовое слово. А так: (uint32_t) 0x1FF800FC ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dsl2640free 0 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба в ST для хранения калибровочных данных используются разные адреса в зависимости от чипа Chip CAL1 CAL2 L15+[CRUV]C 0x1FF800FA 0x1FF800FE L162[RV]C 0x1FF800FA 0x1FF800FE L15[12]+[68B] 0x1FF8007A 0x1FF8007E Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izolenta 0 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 31 minutes ago, ViKo said: А вы читаете и выводите не байт, а 16 битовое число, начинающееся с указанного адреса (uint16_t*) 0x1FF800FE. В третьем случае, скорее всего, невозможно прочитать 4-байтовое слово. А так: (uint32_t) 0x1FF800FC ? Да вроде нет, вывожу только то, что передал в массив uint8_t txt_buf[200], то есть значение, которое содержится по адресу 0x1FF800FE. Или не так? Вот моя функция передачи строки: void SendUSART (uint8_t *text) { while(*text) { while(!(USART2->SR & USART_SR_TC)); //Transmission is complete USART2->DR = *text; //write data text++; } } Если пробовать так (uint32_t) 0x1FF800FC, то выдаст TS_cal_110=56033280 ( в принципе подходит под тип uint32_t). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
izolenta 0 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 36 minutes ago, dsl2640free said: в ST для хранения калибровочных данных используются разные адреса в зависимости от чипа Chip CAL1 CAL2 L15+[CRUV]C 0x1FF800FA 0x1FF800FE L162[RV]C 0x1FF800FA 0x1FF800FE L15[12]+[68B] 0x1FF8007A 0x1FF8007E Хотите сказать, что все-таки для хранения каллибровочных констант используется один адрес, а не диапазон из двух соседних, например для cal2 0x1FF8 00FE - 0x1FF8 00FF. И,мол, производители указали диапазон для целого семейства МК? Тогда почему нигде в даташите или рефмане об этом не сказано и не указано? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 2 апреля, 2019 Опубликовано 2 апреля, 2019 · Жалоба 56033280 dec = 00000011 01010111 00000000 00000000 bin Посмотрите, не находите здесь чисел 855 и 87? 9 минут назад, izolenta сказал: Да вроде нет Точно "да"! 10 минут назад, izolenta сказал: Если пробовать так (uint32_t) 0x1FF800FC Не так. А так: (uint32_t *) 0x1FF800FC Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться