Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ARM, Cortex, STM32 Про IDE для разработки под STM32 Начну с небольшого вступления - я сам довольно давно пишу под stm32 и всегда пользовался arm-none-eabi + make для сборки проектов. Все файлы проета - только С и скрипт линкера. Внутрисхемным отладчиком никогда не пользовался - ибо небыло нужды. И этого мне слихвой хватало. Но вот читая статьи в интернете постоянно натыкаюсь на то как что-либо сделать в той или иной IDE (Keil MDK-ARM, stm32Cube... https://www.cyberforum.ru/ arm/ thread3073154.html ARM, Cortex, STM32 Создание считывателя импульсов на STM32 bluepill в Arduino IDE
Здравствуйте, уважаемые участники форума. Возник такой вопрос. Недавно перешёл с Arduino на Stm32, дабы переход произошёл более плавно, использую среду программирования Arduino IDE. Перешёл на Stm32 по причине её более высокой мощности. Вопрос вот в чём. Необходимо переделать вот эту программу на Ардуино, которая отвечает за считывание импульсов: #include <Wire.h> #include <avr/io.h>...
ARM, Cortex, STM32 STM32f407VEt6 + ethernet + uip + dp83848 Доброго времени суток! Пишу проект под stm32f407vet6, суть простая - обмен по ethernet между платой и верхним уровнем. Пытался использовать стек LWIP, но с ним плата запускается не с первого раза, пингует через раз.... Задавал вопрос по этому поводу тут Поэтому хочу попытаться подключить более простой стек uip, но не знаю, как правильно это сделать, какие шаги предпринять. Гайдов в... https://www.cyberforum.ru/ arm/ thread3072162.html ARM, Cortex, STM32 The symbol VECT_TAB_SRAM needs to be defined when building the project https://www.cyberforum.ru/ arm/ thread3071625.html
Всем доброго времени суток, объясните пожалуйста, что нужно сделать для мк stm32f401cc, чтобы он нормально заработал если при создание проект вот такая записка: * IMPORTANT NOTE! * The symbol VECT_TAB_SRAM needs to be defined when building the project * if code has been located to RAM and interrupts are used. * Otherwise the interrupt table located in flash will be used. * ...
Подскажите, как построить спектрограмму и вывести её на дисплей Proteus? ARM, Cortex, STM32
Здравствуйте, подскажите пожалуйста, как построить спектрограмму и вывести её на дисплей Proteus?
ARM, Cortex, STM32 Работа USART в дуплексе В мануале на МК написано что USART работает в режиме дуплекс, т.е. одновременно может принимать и отправлять. По физике видно что при передаче, когда пустеет регистр, в котором находятся данные на ожидании своей очереди, поднимается флаг и срабатывает прерывание для заполнения этого регистра, если его не заполнить и нечего больше передавать, то передача заканчивается, поднимается соответствующий... https://www.cyberforum.ru/ arm/ thread3071386.html
ARM, Cortex, STM32 Не передаются данные по enc28j60 https://www.cyberforum.ru/ arm/ thread3070365.html
Здравствуйте! Написал программу для отправки данных по UDP, но столкнулся с непонятной ошибкой. Весь стек сохраняется в буффер передачи, но не выдается в сеть. Я стал смотреть физический регистр PHSTAT2, и оказалось, что он всегда равен 0, т.е. enc28j60 не передает ничего. При приеме кадров тоже самое, т.е. PHSTAT2 = 0 и регистр отвечающий за количество принятых байт тоже ноль. В чем может быть...
Ошибка при работе с DMA ARM, Cortex, STM32
Доброго времени! Пытаюсь настроить передачу по UART с DMA. Ситуация получается такая: у меня в основном цикле передача должна идти с задержкой, но передается только один раз, потом как будто буфер, который я хочу передать, очищается, функция передачи проходит, но ничего не происходит. Кто может посмотреть, подсказать? Камень stm32f051r8tx Тут выложу немного кода, остальное в приложении к...
ARM, Cortex, STM32 не могу прошить в Keil5 Здравствуйте. Давно не садился за микроконтроллер. Вчера решил залить программу в МК в среде Keil в "синюю таблетку" (STM32F103С8T6). Результат -сообщение: Command not supported Error: Flash Download failed - Target DLL has been cancelled (Команда не поддерживается Ошибка: Ошибка загрузки флэш-памяти — целевая библиотека DLL была отменена) При этом STM32 ST-LINK Utility МК видит. https://www.cyberforum.ru/ arm/ thread3069498.html ARM, Cortex, STM32 Стал мелкий текст кода в IDE. Как вернуть? смотрите вложение Откаты в дефолт не помогают. Проблема в любом проекте. И дело не в масштабе, хотя и настройки масштаба тоже не вижу. https://www.cyberforum.ru/ arm/ thread3068090.html
Как послать пульс с платы Нуклео ? ARM, Cortex, STM32
Здравствуйте ! Делаю небольшой проект, подключаю к плате Nucleo-L152RE ультразвуковой датчик расстояния Ultrasonic. Чтобы датчик начал измерять расстояние, надо ему на ножку Trigger послать пульс длительностью 5 мксек. Как это сделать в принципе ? Что для этого нужно юзать на плате, PWM ? Или что то еще ? Буду благодарен за советы.
ARM, Cortex, STM32 Задержка по таймеру Stm32&AVR в 1мксек Как мне лучше настроить таймер на 1 мкрсек.? https://www.cyberforum.ru/ arm/ thread3066902.html
0 / 0 / 0
Регистрация: 20.11.2019
Сообщений: 19
25.01.2023, 15:40  [ТС] 0

STM32F051, I2C, SPl, проблема с запуском шины - ARM, Cortex, STM32 - Ответ 16714892

25.01.2023, 15:40. Показов 636. Ответов 13
Метки (Все метки)

Ответ

Цитата Сообщение от Worldmaster Посмотреть сообщение
vick_lo, ну можно тогда и харкорно, хотя в чем тут профит кроме головной боли не ясно.

i2c.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef __I2C_H__
#define __I2C_H__
 
#include "stm32f10x.h"
#include "stm32f10x_i2c.h"
 
/* I2C SPE mask */
#define I2C_CR1_PE_Set              ((uint16_t)0x0001)
#define I2C_CR1_PE_Reset            ((uint16_t)0xFFFE)
 
/* I2C START mask */
#define I2C_CR1_START_Set           ((uint16_t)0x0100)
#define I2C_CR1_START_Reset         ((uint16_t)0xFEFF)
 
/* I2C STOP mask */
#define I2C_CR1_STOP_Set            ((uint16_t)0x0200)
#define I2C_CR1_STOP_Reset          ((uint16_t)0xFDFF)
 
/* I2C ACK mask */
#define I2C_CR1_ACK_Set             ((uint16_t)0x0400)
#define I2C_CR1_ACK_Reset           ((uint16_t)0xFBFF)
 
/* I2C ENGC mask */
#define I2C_CR1_ENGC_Set            ((uint16_t)0x0040)
#define I2C_CR1_ENGC_Reset          ((uint16_t)0xFFBF)
 
/* I2C SWRST mask */
#define I2C_CR1_SWRST_Set           ((uint16_t)0x8000)
#define I2C_CR1_SWRST_Reset         ((uint16_t)0x7FFF)
 
/* I2C PEC mask */
#define I2C_CR1_PEC_Set             ((uint16_t)0x1000)
#define I2C_CR1_PEC_Reset           ((uint16_t)0xEFFF)
 
/* I2C ENPEC mask */
#define I2C_CR1_ENPEC_Set           ((uint16_t)0x0020)
#define I2C_CR1_ENPEC_Reset         ((uint16_t)0xFFDF)
 
/* I2C ENARP mask */
#define I2C_CR1_ENARP_Set           ((uint16_t)0x0010)
#define I2C_CR1_ENARP_Reset         ((uint16_t)0xFFEF)
 
/* I2C NOSTRETCH mask */
#define I2C_CR1_NOSTRETCH_Set       ((uint16_t)0x0080)
#define I2C_CR1_NOSTRETCH_Reset     ((uint16_t)0xFF7F)
 
/* I2C registers Masks */
#define I2C_CR1_CLEAR_Mask          ((uint16_t)0xFBF5)
 
/* I2C DMAEN mask */
#define I2C_CR2_DMAEN_Set           ((uint16_t)0x0800)
#define I2C_CR2_DMAEN_Reset         ((uint16_t)0xF7FF)
 
/* I2C LAST mask */
#define I2C_CR2_LAST_Set            ((uint16_t)0x1000)
#define I2C_CR2_LAST_Reset          ((uint16_t)0xEFFF)
 
/* I2C FREQ mask */
#define I2C_CR2_FREQ_Reset          ((uint16_t)0xFFC0)
 
/* I2C ADD0 mask */
#define I2C_OAR1_ADD0_Set           ((uint16_t)0x0001)
#define I2C_OAR1_ADD0_Reset         ((uint16_t)0xFFFE)
 
/* I2C ENDUAL mask */
#define I2C_OAR2_ENDUAL_Set         ((uint16_t)0x0001)
#define I2C_OAR2_ENDUAL_Reset       ((uint16_t)0xFFFE)
 
/* I2C ADD2 mask */
#define I2C_OAR2_ADD2_Reset         ((uint16_t)0xFF01)
 
/* I2C F/S mask */
#define I2C_CCR_FS_Set              ((uint16_t)0x8000)
 
/* I2C CCR mask */
#define I2C_CCR_CCR_Set             ((uint16_t)0x0FFF)
 
/* I2C FLAG mask */
#define I2C_FLAG_Mask               ((uint32_t)0x00FFFFFF)
 
/* I2C Interrupt Enable mask */
#define I2C_ITEN_Mask               ((uint32_t)0x07000000)
 
#define DS3231_I2C_ADDR (0x68<<1)
#define DS3231_CONTROL_REG ((uint8_t)0x0E)
#define DS3231_STATUS_REG ((uint8_t)0x0F)
 
#define LAST    ((uint8_t)0x01)
#define NOLAST  ((uint8_t)0x00)
 
#define enable_i2c      I2C1->CR1 |= I2C_CR1_PE_Set;    // =1, disable I2C
#define disable_i2c     I2C1->CR1 &= I2C_CR1_PE_Reset;  // disable I2C
#define stop_i2c        I2C1->CR1 |= I2C_CR1_STOP_Set;  //=0x0200, send STOP
 
uint8_t init_i2c(uint8_t adr, uint8_t value, uint8_t last);
 
#endif

реализация

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "i2c.h"
 
uint8_t init_i2c(uint8_t adr, uint8_t value, uint8_t last) {
    I2C1->CR1 |= I2C_CR1_START_Set;             //=0x0100, START
    while (!(I2C1->SR1 & I2C_FLAG_SB));         // wait SB
    (void) I2C1->SR1;
    I2C1->DR=adr;                               // send ADDR
    while (!(I2C1->SR1 & I2C_FLAG_ADDR))        // wait ADDR
    {
        if(I2C1->SR1 & I2C_IT_AF)               // if NACK
            return 1;
    }
    (void) I2C1->SR1;                           // clear ADDR
    (void) I2C1->SR2;                           // clear ADDR
    I2C1->DR=value;
    if (last == LAST) {
        while(!(I2C1->SR1 & I2C_FLAG_BTF));     // wait BFT
        I2C1->CR1 |= I2C_CR1_STOP_Set;          // Program the STOP bit
        while (I2C1->CR1 & I2C_CR1_STOP_Set);   // Wait until STOP bit is cleared by hardware
    } else {
        while(!(I2C1->SR1 & I2C_FLAG_TXE));     // wait TXE bit
    }
    return 0;
}

ну и использование как то так:

C++
1
2
3
4
5
6
7
8
9
10
11
for(adr=0;adr<128;adr++) {
            enable_i2c;
            if (init_i2c((adr<<1), 0x0, LAST) == 0) {
                usart1_print_string("Device was found: ");
                usart1_print_hex(adr);
                usart1_send_char('\n');
            } else
                stop_i2c;
            delay(20);
            disable_i2c;
        }
Во-первых, спасибо!
Во-вторых, у меня stm32fo51.
И я тут теряюсь, потому что у меня в регистре статусов нет бита старта....что можно вместо него использовать?
Может, бит BUSY?
STM32F051, I2C, SPl, проблема с запуском шины


Вернуться к обсуждению:
STM32F051, I2C, SPl, проблема с запуском шины ARM, Cortex, STM32
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.01.2023, 15:40
Готовые ответы и решения:

STM32F051 Проблема с запуском ADC от Timer1 по TRGO
Не могу завести АЦП. Все работает, если ацп запускать в автозапуске, но по таймеру1 запустить не...

STM32F0 I2C SPL, первый байт...
Подскажите, почему, при указании строки: I2C_TransferHomdling(I2C1, 0x55, 0, I2C_AutoEnd_Mode,...

Библиотека для работы с LCD Motorola T191 (I2C) STM32F051
Привет. Давно обещал - выкладываю... Проверялась на STM32F042 и на STM32F0Dyscovery (именно под...

Чтение 16 бит шины I2C
Как это можно сделать в Линуксе Ubuntu? есть i2cget , но мне надо прочитать адрес регистра из 16...

Высокоскоростной режим I2C-шины
Есть контроллер STM32F103C8T6, на котором поддерживаются только медленные I2C-режимы в 100 кГц и...

13
25.01.2023, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2023, 15:40
Помогаю со студенческими работами здесь

Непонятная ошибка шины i2c...
y2s работает на прерываниях, но иногда происходит что то не понятное, хаотично примерно через 5-30...

После чтения теряет арбитраж шины I2C (STM32F100RB)
Перенёс с stm32f407 на stm32f100rb проектик с I2C, после чтения регистра линия SDA падает в 0 и там...

Проблемы с работой LCD1602A через контроллер шины I2C PCF8574T
Здравствуйте. Пишу код на C для работы с дисплеем LCD1602A через PCF8574T по аппаратному I2C...

Пропускная способность шины оперативной памяти должна соответствовать пропускной способности шины процессора
1. Это в интернете прочитал. Если например я поставлю две планки по 800 которые будут работать на...

Назначение и основные характеристики системной шины. Шины ISA, EISA, VLB, PCI, AGP
Ребят требуеться помощь с ответом на вопрос: Назначение и основные характеристики системной шины....

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru