Jump to content

    

MasterElectric

Участник
  • Content Count

    33
  • Joined

  • Last visited

Community Reputation

0 Обычный

About MasterElectric

  • Rank
    Участник

Recent Profile Visitors

121 profile views
  1. STM32L152VBH6A перепрограммирование.

    Как нету, а LEVEL 2? Установите STM32 ST-LINK Utility и посмотрите на Options Byte и увидите уровень защиты.
  2. Двухканальные режим qspi в stm32f469

    Старые они исправляют, а новые добавляют))
  3. Да это бред... Ядру вообще пофигу откуда выбирать инструкции, главное чтобы он мог это делать физически, ничего он не распознает. Да и писать во флеш можно хоть байты, хоть полуслова, хоть слова. К адресу прибавляеться единица когда инструкции перехода меняют режим процессора с Thumb на ARM и все. Интересно как можно поделить код на только данные и только инструкции если сразу после кода идет блок констант. И кто вам сказал что при защите ядро не имеет доступа к чтению. Да и по формулировке что не работает у ТС совсем непонятно.
  4. Как передать дробное число по UART stm32F3

    А что говорит справка по sprintf? Или нужно использовать расширенную версию библиотеки.
  5. Двухканальные режим qspi в stm32f469

    А на картинке просто нарисовано что они могут работать или независимо или в дуале вот и пунктирные линии.
  6. STM32F070, подстава от ST в документации.

    уже посмотрел что их всего 4 F070 и все в 1 ДШ, бывает просто что ДШ несколько, для мелких и постарше.
  7. STM32F070, подстава от ST в документации.

    Сергей Борщ подскажите с каким конкретно чипом такая засада, сделаю заметку.
  8. STM32L0 HardFault: заморочки с выравниванием

    Для доступа к байту выравнивать не нужно, для полуслова адрес должен быть кратен 2, для слова 4 байтам.
  9. Stack, 8-byte alligment, откуда ноги?

    Это связано с выравниванием стекового фрейма к двойному слову. Это можно отключить в NVIC регистр CCR бит STKALIGN, после чего выравнивание будет к слову. Но отключать можно не во всех МК, m7 нельзя точно. По идее падало во время переключения задач, т.е. при вызове прерывания.
  10. STM32H743 и SDIO

    Это мы рукожопые, а не они)
  11. STM32H743 SPI

    ну скорее всего ошибка в коде и он уходит в стоп режим. Я бы пока малоизучена система тактирования не разгонял бы его. Я имел в виду стабилизатор что в чипе, но раз признаки жизни подает значит живой.
  12. STM32H743 SPI

    Печалька, а где вы ее кстати покупали, в китае? у нас поискал еще нет в продаже. Может полетел встроенный стабилизатор (на 400 тоже не стабильно подключался поэтому сижу на HSI, но я настраивал по мануалу режим стабилизатора установил, память настроил, делители, PLL и то стремно пока что), иногда во время экспериментов неудачных, проц попав видимо в исключение не реагирует на отладчик, помогает только ресет подключить от программатора. Попробуйте загнать его в заводской бут.
  13. STM32H743 SPI

    У меня план ковыряний примерно такой же, QSPI давно хотел попробовать. Доделаю ДМА и начну USART (вроде как в F7 1 в 1, так что не сложно), с ДМА пришла в голову мысль (раз уж каналы стали полностью идентичные) динамически раздавать каналы по запросу периферии, все-равно запуск от полной инициализации отличаеться не сильно по размеру, но страдаю с общими регистрами (RCC, и общие ДМА, особенно с ДМА, совсем не красиво). Пока в голову пришли одни таблицы, зависимостей не видать совсем.
  14. STM32H743 SPI

    Да не заметил. Я думаю под себя перепишите. Пример. NRF24_SPI->Connect(); NRF24_SPI->SendByte(0x55); NRF24_SPI->SendByte(0xaa); NRF24_SPI->Disconnect(); функции библиотеки: void TSPI::Connect(void) { // конфигурируем SPI1 this->SPI->CFG1 = SPI_CFG1_MBR_0 | SPI_CFG1_MBR_2 | SPI_CFG1_DSIZE_0 | SPI_CFG1_DSIZE_1 | SPI_CFG1_DSIZE_2; this->SPI->CFG2 = SPI_CFG2_SSOE | SPI_CFG2_MASTER | SPI_CFG2_AFCNTR; // старт передаем неопределенное кол-во байт this->SPI->CR2 = 0; this->SPI->CR1 |= SPI_CR1_SPE; this->SPI->CR1 |= SPI_CR1_CSTART; } void TSPI::Disconnect(void) { this->SPI->CR1 |= SPI_CR1_CSUSP; this->SPI->CR1 &= ~SPI_CR1_SPE; // еще можно сбросить сам модуль // ... } uint8_t TSPI::SendByte(uint8_t data_out) { uint8_t data_in = 0; while (!(this->SPI->SR & SPI_SR_TXP)); *((__IO uint8_t *)&this->SPI->TXDR) = data_out; // Ждать завершения приёма while(!(this->SPI->SR & SPI_SR_RXP)); data_in = *(volatile uint8_t *) &(this->SPI)->RXDR; return data_in; } P.S. Да первый модуль который я разбираю и столько граблей, то ли нужно глубже вникать, то ли сыроват еще.