Compare commits
7
Commits
Dev
..
ai-context
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2499f37285 | ||
|
|
e3a2fa1222 | ||
|
|
f864fd9980 | ||
|
|
ff7f9420d2 | ||
|
|
8893d5425c | ||
|
|
25c09b9c66 | ||
|
|
a170b83bc1 |
@@ -0,0 +1 @@
|
|||||||
|
46d623cd4ddc5fedceaebbb5663a8c12e3c7f9a4
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# 🤖 Технический контекст проекта (Сгенерировано ИИ)
|
||||||
|
|
||||||
|
# 🤖 Технический контекст проекта
|
||||||
|
|
||||||
|
### README для репозитория
|
||||||
|
|
||||||
|
**1. Краткое назначение проекта.**
|
||||||
|
|
||||||
|
Проект содержит реализацию сканера устройств по интерфейсу I2C (DS_I2CScanner.c). Назначение — обнаружение и идентификация подключённых к шине I2C устройств путём последовательного перебора адресов и проверки наличия отклика.
|
||||||
|
|
||||||
|
**2. Тип стека.**
|
||||||
|
|
||||||
|
Драйверная библиотека для микроконтроллеров с поддержкой шины I2C (STM32/ARM Cortex-M).
|
||||||
|
|
||||||
|
**3. Архитектурный разбор:**
|
||||||
|
|
||||||
|
* **Src/** — директория исходного кода проекта.
|
||||||
|
* **DS_I2CScanner.c** — реализация сканера I2C: функции для инициализации шины, перебора адресов 0x08–0x77, проверки наличия отклика на каждом адресе, вывода результатов в консоль/лог.
|
||||||
|
|
||||||
|
<!-- USER_CUSTOM_CONTEXT_START -->
|
||||||
|
# ✍️ Заметки разработчика
|
||||||
|
|
||||||
|
Библиотека для поиска устройств на шине i2c.
|
||||||
+17
-22
@@ -2,29 +2,24 @@
|
|||||||
|
|
||||||
void DS_I2CScan(I2C_HandleTypeDef *I2C, uint8_t *Result, uint8_t maxNumResults)
|
void DS_I2CScan(I2C_HandleTypeDef *I2C, uint8_t *Result, uint8_t maxNumResults)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef HAL_result = HAL_ERROR;
|
HAL_StatusTypeDef HAL_result = HAL_ERROR;
|
||||||
uint8_t NumOfResult = 0;
|
uint8_t NumOfResult = 0;
|
||||||
|
|
||||||
for (uint8_t i = 0; i < maxNumResults; i++)
|
for (uint8_t i = 0; i < maxNumResults - 1; i++)
|
||||||
|
{
|
||||||
|
Result[i] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (uint8_t addr = 0; addr < 0xFF; ++addr)
|
||||||
|
{
|
||||||
|
HAL_result = HAL_I2C_IsDeviceReady(I2C, addr, 3, 1000);
|
||||||
|
if (HAL_result == HAL_OK)
|
||||||
{
|
{
|
||||||
Result[i] = 0;
|
Result[NumOfResult] = addr;
|
||||||
}
|
if (NumOfResult < maxNumResults - 1)
|
||||||
|
{
|
||||||
// 2. Перебор стандартных 7-битных адресов (от 1 до 127)
|
NumOfResult++;
|
||||||
for (uint8_t addr = 1; addr < 128; addr++)
|
}
|
||||||
{
|
|
||||||
if (NumOfResult >= maxNumResults)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Передаем адрес со сдвигом влево (addr << 1)
|
|
||||||
HAL_result = HAL_I2C_IsDeviceReady(I2C, (addr << 1), 3, 50);
|
|
||||||
|
|
||||||
if (HAL_result == HAL_OK)
|
|
||||||
{
|
|
||||||
Result[NumOfResult] = (addr << 1);
|
|
||||||
NumOfResult++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user