Реализована адресация
This commit is contained in:
parent
aa1a78117b
commit
f02703659d
2 changed files with 11 additions and 10 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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Отправка запроса чтения...")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue