![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
golf2109
Участник-
Постов
80 -
Зарегистрирован
-
Посещение
Весь контент golf2109
-
для 20-ногих проблему решал так https://arm-stm.blogspot.com/2016/04/stm32f...oblem-user.html
-
а при чем тут толщина кабеля???
-
не работает ответ i2c от stm32 в режиме slave
golf2109 ответил Метценгерштейн тема в STM
я бы использовал DMA ** * @brief Transmit in slave mode an amount of data in non-blocking mode with DMA * @param hi2c Pointer to a I2C_HandleTypeDef structure that contains * the configuration information for the specified I2C. * @param pData Pointer to data buffer * @param Size Amount of data to be sent * @retval HAL status */ HAL_StatusTypeDef HAL_I2C_Slave_Transmit_DMA(I2C_HandleTypeDef *hi2c, uint8_t *pData, uint16_t Size) -
вот кстати как его перепрограммировать https://arm-stm.blogspot.com/2016/04/stm32f...oblem-user.html
-
Обработчик прерываний не работает cortex m3
golf2109 ответил winniethepooh тема в ARM
дело наверное в приоритетах -
I2C STM32L4
golf2109 ответил MiklPolikov тема в ARM
эхо может быть в виде бита или в виде байта -
лучше тем, что в CubeMX для конфигурации временных параметров CAN bus применяетмя некое подобие калькулятора и при выборе параметров CAN трудно ошибиться даже если много опыта и большое желание почитать документацию, то сделать например ремап пинов и инициализацию для случая CAN bus например для STM32F042F4 получится с помощью CubeMX намного быстрее и проще... хотя, если есть желание набраться опыта и почитать докумантацию, а самое главное есть начальство оплачивающее !!! самообразование разработчика в рабочее время, когда проект должен быть сделан "на вчера"....
-
для установки CAN timing лучше использовать CubeMX или программки вроде CAN-калькуляторов
-
V2 гараздо лучше V1 я вот когда-то переделывал специально VLDiscovery http://arm-stm.blogspot.com/2014/04/stm32v...-stm32f103.html
-
ну и что показал анализ причин отказов?
-
Я инициализировал так в рабочем проекте и работало неплохо везде, (начиная с макетки) с кварцами 6 пФ и 12 пФ правда сама точность часов (например уход за сутки) Вас очень огорчит, но не расстраивайтесь, попробуйте откалибровать RTC, а для утешения посмотрите на точность хода часов на Вашем компе (выключив синхронизацию с интернетом) ]int RtcInit (void) { //разрешить тактирование модулей управления питанием и управлением //резервной областью - enable APB1 clocks RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; // disable backup domain write protection //разрешить доступ к области резарвных данных PWR->CR |= PWR_CR_DBP; //если часы выключены - инициализировать их //Bit 15 RTCEN: RTC clock enable //Set and cleared by software. //0: RTC clock disabled //1: RTC clock enabled if ((RCC->BDCR & RCC_BDCR_RTCEN) != RCC_BDCR_RTCEN) { //выполнить сброс области резервных данных // reset Backup Domain //Bit 16 BDRST: Backup domain software reset //Set and cleared by software. //0: Reset not activated //1: Resets the entire Backup domain RCC->BDCR |= RCC_BDCR_BDRST; RCC->BDCR &= ~RCC_BDCR_BDRST; //выбрать источником тактовых импульсов внешний кварц 32768 и подать тактирование //Bit 15 RTCEN: RTC clock enable //Set and cleared by software. //0: RTC clock disabled //1: RTC clock enabled //Bits 9:8 RTCSEL[1:0]: RTC clock source selection //Set by software to select the clock source for the RTC. Once the RTC clock source has been selected, // it cannot be changed anymore unless the Backup domain is reset. The BDRST bit can be used to reset them. //00: No clock //01: LSE oscillator clock used as RTC clock10: LSI oscillator clock used as RTC clock //11: HSE oscillator clock divided by 128 used as RTC clock RCC->BDCR |= RCC_BDCR_RTCEN | RCC_BDCR_RTCSEL_LSE; //установка маски разрешения секундных прерываний //Bit 0 SECIE: Second interrupt enable //0: Second interrupt is masked. //1: Second interrupt is enabled. RTC->CRH |= RTC_CRH_SECIE; ///!!!!!!!!!!!!SECOND INTERRUPT ENABLE //Bit 4 CNF: Configuration flag //This bit must be set by software to enter in configuration mode so as to allow new values to //be written in the RTC_CNT, RTC_ALR or RTC_PRL registers. The write operation is only //executed when the CNF bit is reset by software after has been set. //0: Exit configuration mode (start update of RTC registers). //1: Enter configuration mode. RTC->CRL |= RTC_CRL_CNF; //If the input clock frequency (fRTCCLK) is 32.768 kHz, write 7FFFh in this register to get a //signal period of 1 second. RTC->PRLH = 0; RTC->PRLL = 0x8000; //тактирование от внешнего кварца AFIO->EVCR =0xAD; //PC13-calibration clock output enable BKP->RTCCR |= BKP_RTCCR_CCO; //Setting this bit outputs the //RTC clock with a frequency divided by 64 on the TAMPER pin BKP->RTCCR |= BKP_RTCCR_ASOS | BKP_RTCCR_ASOE; //0: Exit configuration mode (start update of RTC registers). RTC->CRL &= ~RTC_CRL_CNF; //установить бит разрешения работы и дождаться установки бита готовности RCC->BDCR |= RCC_BDCR_LSEON; while ((RCC->BDCR & RCC_BDCR_LSEON) != RCC_BDCR_LSEON){} //while ((RCC->BDCR & RCC_BDCR_LSERDY) != RCC_BDCR_LSERDY); //вариант //Bit 3 RSF: Registers synchronized flag //This bit is set by hardware at each time the RTC_CNT and RTC_DIV registers are updated //and cleared by software. Before any read operation after an APB1 reset or an APB1 clock //stop, this bit must be cleared by software, and the user application must wait until it is set to //be sure that the RTC_CNT, RTC_ALR or RTC_PRL registers are synchronized. //0: Registers not yet synchronized. //1: Registers synchronized. RTC->CRL &= (uint16_t)~RTC_CRL_RSF; while((RTC->CRL & RTC_CRL_RSF) != RTC_CRL_RSF){} return 0; } return 1; } тут еще есть RTC Init
-
CL(Load Capacitance) - это и есть собственная емкость кварца look at Table 7. Recommended crystal resonators for LSE oscillator embedded in STM32 microcontrollers кстати табличка 7 в данной доке обновилась по сравнению с старыми версиями - в старых вообще кварцев с CL > 7 пФ не было, да и footprint описан намного подробнее
-
самое главное в часах от ST, то что в даташитах от ST пишут, что часовой кварц должен иметь собственную емкость 6 пФ (тогда они гарантируют устойчивую генерацию), а большинство кварцев, в том числе и те которые сам SM ставит на Дискавери с емкостью 12 пФ. Исхитрившись и достав кварцы на 6 пФ убедился, что ST таки не зря настаивает на 6 пФ. Ганерация с 6 пФ беспроблемная. А для 12 пФ даже остатки флюса приводят к срыву генерации или вообще к ее отсутствию.
-
попробуйте настроить регистры GPIO в самомначале, до этого I2C1->CR2 |= 36;//36 MHz входит в модуль I2C и не совсем понятно зачем сначала сбрасывать, а затем устанавливать биты GPIOB->CRL &=~(GPIO_CRL_MODE6|GPIO_CRL_MODE7|GPIO_CRL_CNF6|GPIO_CRL_CNF7); GPIOB->CRL |= (GPIO_CRL_MODE6|GPIO_CRL_MODE7|GPIO_CRL_CNF6|GPIO_CRL_CNF7);
-
вот ссылки dma-to-usart uart-dma-out dma-uart-in-out
-
заказчик не захотел менять плату пришлось проблему решить более кардинально с помощью ST_LINK Utility установить бит nBOOT0 и сбросить BOTT_SEL вот тут описал http://arm-stm.blogspot.com/2016/04/stm32f...oblem-user.html
-
Если так интересно, то сконфигурирована была в CubeMX, а PB8 (а не PA8) при том, что в момент старта эта нога выполняет функции входа BOOT0
-
проблема была в том, что PB8/BOOT0 сконфигурирована как CAN_RX, после ремапа в РА11 и pull-down PB8 проблема решилась спасибо x893 за совет
-
BOOT сигнал наружу не выведен, т.к. корпус 20-ти ногий, а в настройках, по умолчанию стартует с Main ROM
-
Проблеме при запуске отладчика Кейла для STM32F042 (Run to main() в настройках отладчика отключен) -пример нормального запуска примера из STM32F0xx_StdPeriph_Lib_V1.5.0\Projects\STM32F0xx_StdPeriph_Examples для STM32F030 а вот то же самое для STM32F042 как заставить стартовать F042 с 0ч080000000?
-
в настройках проекта вместо EndDevice выбрать Coordinator
-
Я бы прежде всего зашел бы в отладчик и посмотрел на каком этапе инициализации появляется генерация
-
STM32F105 нога PB9
golf2109 ответил [email protected] тема в ARM
если без ремапа в GPIO не дергается, то скорей всего подгорело -
1- например - количество частиц (примерное) размером 1-10 микрон, 10- 100 микрон, 100-1000 микрон 2- микрочастица - все что угодно (грязь любая) 3- например дизтопливо (диэлектрик) для смягчения безысходности необходимо можно заменить на "надо"
-
Оценка загрязнения жидкости
golf2109 опубликовал тема в Метрология, датчики, измерительная техника
Необходимо оценить (измерить) в жидкости количественный состав микрочастиц (как диэлектрических так и проводящих).