Реализована адресация

This commit is contained in:
lulko 2025-03-03 15:02:32 +03:00
parent aa1a78117b
commit f02703659d
2 changed files with 11 additions and 10 deletions

View file

@ -140,8 +140,7 @@ void send_id() {
uint8_t id = *(volatile uint32_t*)ADDR_VAR_ID; uint8_t id = *(volatile uint32_t*)ADDR_VAR_ID;
FLASH->CR |= FLASH_CR_LOCK; FLASH->CR |= FLASH_CR_LOCK;
CAN_TX_msg.id = id; CAN_TX_msg.id = id;
CAN_TX_msg.buf[0] = 0x22; memcpy(&CAN_TX_msg.buf[0], &id, sizeof(id));
memcpy(&CAN_TX_msg.buf[1], &id, sizeof(id));
Can.write(CAN_TX_msg); Can.write(CAN_TX_msg);
} }
@ -205,11 +204,12 @@ void send_data() {
void listen_can() { void listen_can() {
uint8_t reg_id = CAN_inMsg.id; uint8_t reg_id = CAN_inMsg.id;
if (CAN_inMsg.buf[0] == REG_WRITE) { if (CAN_inMsg.buf[0] == *(volatile uint8_t*)ADDR_VAR_ID) {
if (CAN_inMsg.buf[1] == REG_WRITE) {
switch (reg_id) { switch (reg_id) {
case REG_ID: case REG_ID:
/* setup new id */ /* setup new id */
setup_id(CAN_inMsg.buf[1]); setup_id(CAN_inMsg.buf[2]);
break; break;
case REG_LED_BLINK: case REG_LED_BLINK:
@ -220,7 +220,7 @@ void listen_can() {
break; break;
case MOTOR_ENABLED: case MOTOR_ENABLED:
if (CAN_inMsg.buf[1] == 1) { if (CAN_inMsg.buf[2] == 1) {
motor.enable(); motor.enable();
motor_control_inputs.motor_enabled = 1; motor_control_inputs.motor_enabled = 1;
} else { } else {
@ -232,7 +232,7 @@ void listen_can() {
default: default:
break; break;
} }
} else if (CAN_inMsg.buf[0] == REG_READ) { } else if (CAN_inMsg.buf[1] == REG_READ) {
switch (reg_id) { switch (reg_id) {
case REG_ID: case REG_ID:
send_id(); send_id();
@ -242,6 +242,7 @@ void listen_can() {
break; break;
} }
} }
}
} }

View file

@ -8,15 +8,15 @@ def send_write_read_requests():
# Конфигурация сообщений (ЗАПОЛНИТЕ ВАШИ ЗНАЧЕНИЯ) # Конфигурация сообщений (ЗАПОЛНИТЕ ВАШИ ЗНАЧЕНИЯ)
write_msg = { write_msg = {
'arbitration_id': 0x01, # CAN ID для записи 'arbitration_id': 0x01, # CAN ID для записи
'data': [0xA0, 0x69, 0x00, 0x00], # Данные для записи (4 байта) 'data': [0x27, 0xA0, 0xFF, 0x00], # Данные для записи (4 байта)
'description': "Установка id устройства" 'description': "Установка id устройства"
} }
read_msg = { read_msg = {
'arbitration_id': 0x01, # CAN ID для чтения 'arbitration_id': 0x01, # CAN ID для чтения
'data': [0x99], # Команда запроса данных 'data': [0xFF,0x99], # Адрес новый + команда запроса данных
'description': "Запрос id устройства", 'description': "Запрос id устройства",
'response_id': 0x69, # Ожидаемый ID ответа 'response_id': 0xFF, # Ожидаемый ID ответа
'timeout': 1.0 # Таймаут ожидания ответа (сек) 'timeout': 1.0 # Таймаут ожидания ответа (сек)
} }
@ -31,7 +31,7 @@ def send_write_read_requests():
print(f"Запись: ID={hex(msg.arbitration_id)}, Данные={list(msg.data)}") print(f"Запись: ID={hex(msg.arbitration_id)}, Данные={list(msg.data)}")
# Ждем обработки команды устройством # Ждем обработки команды устройством
time.sleep(1.5) time.sleep(2.0)
# 2. Отправка запроса чтения и ожидание ответа # 2. Отправка запроса чтения и ожидание ответа
print("\nОтправка запроса чтения...") print("\nОтправка запроса чтения...")