mirror of
https://github.com/infiniteCable2/panda.git
synced 2026-02-18 17:23:52 +08:00
detect 723 live (#1835)
* detect 723 live * cleanup * more precise * more precise --------- Co-authored-by: Comma Device <device@comma.ai>
This commit is contained in:
@@ -15,7 +15,4 @@ for project_name, project in build_projects.items():
|
||||
if ("ENABLE_SPI" in os.environ or "h7" in project_name) and not project_name.startswith('pedal'):
|
||||
flags.append('-DENABLE_SPI')
|
||||
|
||||
if "H723" in os.environ:
|
||||
flags.append('-DSTM32H723')
|
||||
|
||||
build_project(project_name, project, flags)
|
||||
|
||||
@@ -19,12 +19,20 @@
|
||||
#include "boards/tres.h"
|
||||
#include "boards/cuatro.h"
|
||||
|
||||
|
||||
uint8_t get_board_id(void) {
|
||||
return detect_with_pull(GPIOF, 7, PULL_UP) |
|
||||
(detect_with_pull(GPIOF, 8, PULL_UP) << 1U) |
|
||||
(detect_with_pull(GPIOF, 9, PULL_UP) << 2U) |
|
||||
(detect_with_pull(GPIOF, 10, PULL_UP) << 3U);
|
||||
uint8_t id = detect_with_pull(GPIOF, 7, PULL_UP) |
|
||||
(detect_with_pull(GPIOF, 8, PULL_UP) << 1U) |
|
||||
(detect_with_pull(GPIOF, 9, PULL_UP) << 2U) |
|
||||
(detect_with_pull(GPIOF, 10, PULL_UP) << 3U);
|
||||
|
||||
if (STM32H7_IS_100PIN) {
|
||||
id = detect_with_pull(GPIOD, 4, PULL_UP) |
|
||||
(detect_with_pull(GPIOD, 5, PULL_UP) << 1U) |
|
||||
(detect_with_pull(GPIOD, 6, PULL_UP) << 2U) |
|
||||
(detect_with_pull(GPIOD, 7, PULL_UP) << 3U);
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
void detect_board_type(void) {
|
||||
@@ -33,23 +41,14 @@ void detect_board_type(void) {
|
||||
if (board_id == 0U) {
|
||||
hw_type = HW_TYPE_RED_PANDA;
|
||||
current_board = &board_red;
|
||||
} else if (board_id == 1U) {
|
||||
// deprecated
|
||||
//hw_type = HW_TYPE_RED_PANDA_V2;
|
||||
} else if (board_id == 2U) {
|
||||
hw_type = HW_TYPE_TRES;
|
||||
current_board = &board_tres;
|
||||
} else if (board_id == 3U) {
|
||||
hw_type = HW_TYPE_CUATRO;
|
||||
current_board = &board_tres;
|
||||
current_board = &board_cuatro;
|
||||
} else {
|
||||
hw_type = HW_TYPE_UNKNOWN;
|
||||
print("Hardware type is UNKNOWN!\n");
|
||||
}
|
||||
|
||||
// TODO: detect this live
|
||||
#ifdef STM32H723
|
||||
hw_type = HW_TYPE_CUATRO;
|
||||
current_board = &board_cuatro;
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -19,13 +19,13 @@ PCLK1: 60MHz (for USART2,3,4,5,7,8)
|
||||
|
||||
void clock_init(void) {
|
||||
// Set power mode to direct SMPS power supply(depends on the board layout)
|
||||
#ifndef STM32H723
|
||||
register_set(&(PWR->CR3), PWR_CR3_SMPSEN, 0xFU); // powered only by SMPS
|
||||
// Set VOS level (VOS3 to 170Mhz, VOS2 to 300Mhz, VOS1 to 400Mhz, VOS0 to 550Mhz)
|
||||
register_set(&(PWR->D3CR), PWR_D3CR_VOS_1 | PWR_D3CR_VOS_0, 0xC000U); //VOS1, needed for 80Mhz CAN FD
|
||||
while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0);
|
||||
while ((PWR->CSR1 & PWR_CSR1_ACTVOS) != (PWR->D3CR & PWR_D3CR_VOS)); // check that VOS level was actually set
|
||||
#endif
|
||||
if (!STM32H7_IS_723) {
|
||||
register_set(&(PWR->CR3), PWR_CR3_SMPSEN, 0xFU); // powered only by SMPS
|
||||
// Set VOS level (VOS3 to 170Mhz, VOS2 to 300Mhz, VOS1 to 400Mhz, VOS0 to 550Mhz)
|
||||
register_set(&(PWR->D3CR), PWR_D3CR_VOS_1 | PWR_D3CR_VOS_0, 0xC000U); //VOS1, needed for 80Mhz CAN FD
|
||||
while ((PWR->CSR1 & PWR_CSR1_ACTVOSRDY) == 0);
|
||||
while ((PWR->CSR1 & PWR_CSR1_ACTVOS) != (PWR->D3CR & PWR_D3CR_VOS)); // check that VOS level was actually set
|
||||
}
|
||||
// Configure Flash ACR register LATENCY and WRHIGHFREQ (VOS0 range!)
|
||||
register_set(&(FLASH->ACR), FLASH_ACR_LATENCY_2WS | 0x20U, 0x3FU); // VOS2, AXI 100MHz-150MHz
|
||||
// enable external oscillator HSE
|
||||
|
||||
@@ -46,6 +46,13 @@ separate IRQs for RX and TX.
|
||||
#define PROVISION_CHUNK_ADDRESS 0x080FFFE0U
|
||||
#define DEVICE_SERIAL_NUMBER_ADDRESS 0x080FFFC0U
|
||||
|
||||
/*
|
||||
panda supports 723 and 725-35, and sometimes we need to tell the difference.
|
||||
0x1 = LQFP100 Legacy / TFBGA100 Legacy
|
||||
*/
|
||||
#define STM32H7_IS_723 ((SYSCFG->PKGR & SYSCFG_PKGR_PKG) == 0x1U)
|
||||
#define STM32H7_IS_100PIN STM32H7_IS_723
|
||||
|
||||
#include "can_definitions.h"
|
||||
#include "comms_definitions.h"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user