Jump to content
Ivan Rusev

stm32f4 usart +terminal 1.9b передача данных

Recommended Posts

Меня интересует вот что .Я пытаюсь передать данные через терминал .А у меня он выводит не  текст а кието 0 и козябрики .Почему?

main.c

Share this post


Link to post
Share on other sites

Может не ту скорость поставили или что-то не то настроили.

Share this post


Link to post
Share on other sites
15.04.2021 в 20:31, Ivan Rusev сказал:

Я пытаюсь передать данные через терминал

Что значит "передать данные через терминал"? Можно передать данные через UART -НА- терминал, например! Тогда надо следить за соответствием настроек этого последовательного порта: COM-порта в компе (+ настройки терминала, возможно) и УАРТА в микросхеме. Вы проверяли, соответствуют? И предыдущий пост примерно про это.

Полторы ТЫСЯЧИ строчек кода не очень разумно выкладывать, без хоть какого то простейшего указания где их читать.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

Популярные пружинные клеммники Degson со склада Компэл

Пружинные разъемные клеммники Degson с технологией Push-In обеспечивают надежное и безопасное электрическое соединение. При их использовании исключается возможность короткого замыкания в точке контакта, что гарантирует надежное соединение. Электрическая безопасность клеммных блоков подтверждается соответствием мировым стандартам UL, IEC и VDE.
Подробнее

Guest Гость

Скорее всего не ту скорость выставили.

Судя по коду:   USART1->BRR  = 0x222E; 

Должно быть:  9600

Share this post


Link to post
Share on other sites

Приглашаем на вебинар "Как сделать эффективную антенну для устройств IoT. Решения Quectel" (29.07.2021)

Вебинар посвящен проектированию и интеграции встроенных и внешних антенн Quectel для сотовых модемов, устройств навигации и передачи данных 2,4 ГГц. На вебинаре вы познакомитесь с продуктовой линейкой и способами решения проблем проектирования. В программе: выбор типа антенны; ключевые проблемы, влияющие на эффективность работы антенны; требования к сертификации ОТА; практическое измерение параметров антенн.

Подробнее

 

4 часа назад, ruhi сказал:

Что значит "передать данные через терминал"? Можно передать данные через UART -НА- терминал, например! Тогда надо следить за соответствием настроек этого последовательного порта: COM-порта в компе (+ настройки терминала, возможно) и УАРТА в микросхеме. Вы проверяли, соответствуют? И предыдущий пост примерно про это.

Полторы ТЫСЯЧИ строчек кода не очень разумно выкладывать, без хоть какого то простейшего указания где их читать.

Это я понял .Что скорость определяется  USART1->BRR  этим числом.И настройка терминала должна быть   на той же скорости. А вот этот момент "соответствием настроек этого последовательного порта: COM-порта в компе"Можете мне обьяснить.?И как определять USART1->BRR  соответствии скорости?.И можно в десятичной форме?

Share this post


Link to post
Share on other sites

Решения TE Connectivity для 112 Gbps архитектуры и серверов. Перспективные решения для серверов и дата-центров

В статье дается полный обзор серий высокоскоростных разъемов IMPACT и Z-PACK, соединителей SFP- QSFP и Mini-SAS, а также разъемов и кабельных сборок для организации питания. Раскрываются преимущества и отличительные особенности данных серий высокоскоростных разъемов и области их применения.
Подробнее

@Ivan Rusev а как ты кодишь на регистрах не заглядывая в Reference Manual? Раздел USART там же все есть, гугл умеет переводить

 

Share this post


Link to post
Share on other sites
12 часов назад, Ivan Rusev сказал:

И как определять USART1->BRR  соответствии скорости?.И можно в десятичной форме?

Найди вот такую таблицу в описании к микросхеме своего контроллера:

image.png.1c4bf170368227d573f411f14aefa0f3.png

Очень не просто разобраться с непривычки, хотя формула примитивная (5-8класс), но раз ты в это влез - деваться некуда, никто за тебя не соберет все значения и не посчитает! А я обычно осцилографом проверяю результаты расчетов, потому что очень легко упустить какой нибудь множитель из настроек, например!


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Лично сам грузил выходники что через слюду что через номакон до 80 градусов (по тепловизору). Ни хрена ничего страшного не увидел. Пробовал даже в режиме ключа и ТО-3 и МТ-200.
    • Очепятка. Там конденсатор на 160В. а реле, на 75В(в схеме,ващще 100В указано),но срабатывают они все от 75В. Я такие переделывал на 12В. всю начинку выкидывал нафиг. Там главный прикол, для КР512ПС10, на которой собран сам таймер, необходимо стабильно 5.6В ,ниже,и будут глюки.Необходим подбор стабилитрона,или токоограничивающего резистора на 24 кОм который. Максимально - 6В. Поэтому,камней дофига тут подводных. Убил не один вечер на этих цацках.
    • Для удлинения USB не годится какой попало провод, особенно если USB-2.
    • Да, надежность, это фигня конечно. Не забивайте голову мелочами.
    • 200нс маловато, наверно 400-500 оптимально. Тогда при частоте 100кГц резонанс 108,5- 111кГц. Для ДТ 200нс резонанс 104кГц. Генератор должен быть стабилен и конденсаторы группы МП0.
    • это вопрос вообще неуместный. Все равно, что спросить на форуме, не в курсе ли кто, сколько у меня на сигареты в месяц уходит. Поэтому, куча лишних вопросов. Вопрос поставлен "каком кверху". Ток холостого хода не то же самое, что потребление электроэнергии из сети - это во первых. Ток ХХ зависит от конкретного экземпляра трансформатора. И зачем Вам его знать ? Наличие/отсутствие выпрямителя тоже погоды на холостых не сделают. Для измерения конкретной величины активной энергии, за которую вы платите денежку, нужны не клещи, а вот это  Ну, побаловался клещами, показали ток. И что дальше с ним делать будете ? Без сдвига фаз - ни о чем, и прямо не говорит о расходе электроэнергии. Прямо ждете его, как "аленькый цветочек", подарок заморский 
    • А зря. Некоторые "юные дарования" и точечные картинки в формате *.bmp диких размеров по Интернету гонять умудряются.
  • Similar Content

    • By Ivan Rusev
      Не получается у меня запустить несколько каналов АЦП в прерывании по DMA.Чего не хватает?
    • By Ivan Rusev
      Меня интересует какие флаги в преривании устанавливать по ДМА ?Кусок кода можно?
    • By Ivan Rusev
      Можно ли на одно шине I2C подключать модуль часов реального времени ds3231 и LCD через модульI2C.У меня не получается почему?
    • By Любовь Бертулите
      Компания производитель вендинговых автоматов для розлива питьевой воды в поисках инженера-системотехника/инженера электронщика.
      График 5/2 с 9 до 18, здесь удаленный формат не рассматриваем.
      Место работы – г. Екатеринбург.
      Мы ищем специалиста, который будет делать прототипы нового для контроллера, курировать производство, проверять, дорабатывать, перепаивать, а также:
      Переписывать текущие программы на С++; Создавать программу для Android для конфигурации параметров контроллера через bluetooth. (т.е. предлагать новые, современные идеи и подходы для развития имеющихся контроллеров, которыми вы владеете); Предлагать новые программные продукты, среды разработки. Будет в тренде мира микроэлектроники, китайского контрактного производства. Может предложить совершенно новую реализацию наших текущих задач, чтобы это было лучше и эффективнее. В идеале, нам нужен специалист, который имеет:
      Опыт программирования микроконтроллеров Atmega, STM32, ESP32; Опыт работы в Altium Designer; Опыт работы в c++ (IAR, QT); Опыт работы с modbus, rs485/232, SPI. Готовы рассматривать специалистов с разным опытом, поэтому пишите, задавайте вопросы.
      Резюме можно отправить на почту lb@ktekt.ru (да, мы кадровое агентство), позвонить можно по следующему тел. 89068001212 - Любовь. 
       
    • By Ivan Rusev
      Уже не один день  сижу думаю как  запустить stm32  с eeprom для сохранения данных.И в кубе такая же история.Записую функцию чтения в майн и контролер  садится ничего не работает ? В чём дело ? Сталкивались с таким чудом.Записывал без функции тоже самое одна сторока  его убивает.
      #include"main.h"
      #define I2C_REQUEST_WRITE                       0x00//0
      #define I2C_REQUEST_READ                        0x01
      #define EEPROM_ADDRESS                   0b1010000
      #define I2C_OWNADDRESS1_7BIT             0x00004000U
      void i2c1_AF_init(void)
      {
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_0;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_1;
        GPIOB->AFR[0]|=GPIO_AFRL_AFSEL7_2    ;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_3;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_0;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_1;
        GPIOB->AFR[0]|=GPIO_AFRL_AFSEL6_2;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_3;
      }
      void i2c1_init(void)
      {
          GPIOB->MODER|=GPIO_MODER_MODE7_1;
          GPIOB->MODER&=~GPIO_MODER_MODE7_0;
          GPIOB->OTYPER|=GPIO_OTYPER_OT7;
          GPIOB->MODER|=GPIO_MODER_MODE6_1;
          GPIOB->MODER&=~GPIO_MODER_MODE6_0;
          GPIOB->OTYPER|=GPIO_OTYPER_OT6;
          RCC->APB1ENR|=RCC_APB1ENR_I2C1EN;
          I2C1->CR2&=~I2C_CR2_FREQ_2  ;
          I2C1->TRISE=9;
          I2C1->CCR&=~I2C_CCR_FS;
          //I2C1->OAR1|=I2C_OAR1_ADD0 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD8_9 | I2C_OAR1_ADDMODE;
           I2C1->OAR1|= I2C_OWNADDRESS1_7BIT;
          //I2C1->CR1|=I2C_CR1_SMBUS | I2C_CR1_SMBTYPE | I2C_CR1_ENARP;

          I2C1->CR1|=I2C_CR1_ACK;
          I2C1->OAR2|=I2C_OAR2_ADD2;
          I2C1->CR1|=I2C_CR1_PE;
      }
      void I2C1_SendByteByADDR1(uint16_t adres,uint8_t  data)
      {
          //uint8_t data2;
          I2C1->CR1|=I2C_CR1_ACK;
          I2C1->CR1|=I2C_CR1_START;
            while(!(I2C1->SR1&I2C_SR1_SB))
            {
            }
          (void) I2C1->SR1;
          I2C1->DR|=  EEPROM_ADDRESS |I2C_REQUEST_WRITE;
          //I2C1->DR|= addr | I2C_REQUEST_WRITE;//
           while (!(I2C1->SR1& I2C_SR1_ADDR))
           {
           }
           (void) I2C1->SR1;
           (void) I2C1->SR2;
           I2C1->DR|=(uint8_t)adres;//
           while (!(I2C1->SR1& I2C_SR1_TXE))
           {
           }
           I2C1->DR|=(uint8_t) (adres>>8) ;//
           while (!(I2C1->SR1 & I2C_SR1_TXE))
           {
           }
           I2C1->DR|=data;
           while (!(I2C1->SR1 & I2C_SR1_BTF))
           {
           }
           I2C1->CR1|=I2C_CR1_STOP;
      }
      void I2C1_readByteByADDR1(uint16_t adres,uint8_t data)
      {
          //uint8_t data2;
          //uint8_t data1;
          I2C1->CR1|=I2C_CR1_ACK;
            I2C1->CR1|= I2C_CR1_START;
            while (!(I2C1->SR1& I2C_SR1_SB)){}
            (void) I2C1->SR1;
            I2C1->DR|=  EEPROM_ADDRESS |I2C_REQUEST_WRITE;
           // I2C1->DR|= SLAVE_OWN_ADDRESS | I2C_REQUEST_WRITE;
            while (!(I2C1->SR1& I2C_SR1_ADDR)){}
            (void) I2C1->SR1;
            (void) I2C1->SR2;
            //Transmit Address begin EEPROM
            I2C1->DR|=  (uint8_t) adres;
           while (!(I2C1->SR1& I2C_SR1_TXE)){}
           I2C1->DR|=(uint8_t) (adres>>8);
            while (!(I2C1->SR1& I2C_SR1_TXE)){}
            I2C1->CR1 |= I2C_CR1_START;
             while (!(I2C1->SR1 & I2C_SR1_SB)){}
             (void) I2C1->SR1;
             I2C1->DR = EEPROM_ADDRESS|I2C_REQUEST_READ;
             while (!(I2C1->SR1 & I2C_SR1_ADDR)){}
              (void) I2C1->SR1;
              (void) I2C1->SR2;
              I2C1->CR1 &= ~I2C_CR1_ACK;
                      while (!(I2C1->SR1 & I2C_SR1_RXNE)){}

                       data= I2C1->DR;
                  //    while (!(I2C1->SR1 & I2C_SR1_RXNE)){}
                       //data2 =I2C1->DR;
                    I2C1->CR1 |= I2C_CR1_STOP;
                  //   return data;
                  //    Delay(5);
      }
      void i2c2_AF_init(void)
      {
          GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_0;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_1;
            GPIOB->AFR[1]|=GPIO_AFRH_AFSEL10_2    ;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_3;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_0;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_1;
            GPIOB->AFR[1]|=GPIO_AFRH_AFSEL11_2;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_3;
      }
      void i2c2_init(void)
      {
          GPIOB->MODER|=GPIO_MODER_MODE10_1;
              GPIOB->MODER&=~GPIO_MODER_MODE10_0;
              GPIOB->OTYPER|=GPIO_OTYPER_OT10;
              GPIOB->MODER|=GPIO_MODER_MODE11_1;
              GPIOB->MODER&=~GPIO_MODER_MODE11_0;
              GPIOB->OTYPER|=GPIO_OTYPER_OT11;
              //RCC->APB1ENR|=RCC_APB1ENR_I2C2EN;
      }
       
       
      вот на  этой строчке
×
×
  • Create New...