A27系列优化I2C/RTC处理,新增版本A270Y

This commit is contained in:
2025-06-07 10:24:51 +08:00
parent 413dd88f3b
commit 73e1c7dafa
372 changed files with 60642 additions and 60661 deletions

View File

@ -60,6 +60,7 @@ extern "C" {
#define DW_IC_RXFLR 0x78
#define DW_IC_SDA_HOLD 0x7c
#define DW_IC_TX_ABRT_SOURCE 0x80
#define DW_IC_TX_PHASE_DELAY 0x84
#define DW_IC_ENABLE_STATUS 0x9c
#define DW_IC_CLR_RESTART_DET 0xa8
#define DW_IC_COMP_PARAM_1 0xf4

View File

@ -6,6 +6,10 @@
#include "board.h"
#include "errno.h"
#define DW_IC_STATUS_TFNF BIT(1)
#define DW_IC_STATUS_RFF BIT(4)
#define DW_IC_FIFO_DEPTH 8
#if defined(HW_I2C0_SUPPORT) || defined(HW_I2C1_SUPPORT)
static char *abort_sources[] = {
@ -453,6 +457,9 @@ static int i2c_dw_init_master(struct dw_i2c_dev *dev)
/* Disable the adapter */
__i2c_dw_disable(dev);
/* Clear interrupts */
dw_readl(dev, DW_IC_CLR_INTR);
/* Write standard speed timing parameters */
dw_writel(dev, dev->ss_hcnt, DW_IC_SS_SCL_HCNT);
dw_writel(dev, dev->ss_lcnt, DW_IC_SS_SCL_LCNT);
@ -512,6 +519,8 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev)
/* Enforce disabled interrupts (due to HW issues) */
i2c_dw_disable_int(dev);
dw_writel(dev, 8, DW_IC_TX_PHASE_DELAY);
/* Enable the adapter */
__i2c_dw_enable(dev);
@ -539,6 +548,7 @@ i2c_dw_xfer_msg(struct dw_i2c_dev *dev)
u32 buf_len = dev->tx_buf_len;
u8 *buf = dev->tx_buf;
int need_restart = 0;
u32 status;
intr_mask = DW_IC_INTR_MASTER_MASK;
@ -576,8 +586,17 @@ i2c_dw_xfer_msg(struct dw_i2c_dev *dev)
need_restart = 1;
}
tx_limit = dev->tx_fifo_depth - dw_readl(dev, DW_IC_TXFLR);
rx_limit = dev->rx_fifo_depth - dw_readl(dev, DW_IC_RXFLR);
status = dw_readl(dev, DW_IC_STATUS);
tx_limit = dw_readl(dev, DW_IC_TXFLR);
if (tx_limit == 0 && !(status & DW_IC_STATUS_TFNF))
tx_limit = 0;
else
tx_limit = dev->tx_fifo_depth - tx_limit;
rx_limit = dw_readl(dev, DW_IC_RXFLR);
if (rx_limit == 0 && (status & DW_IC_STATUS_RFF))
rx_limit = 0;
else
rx_limit = dev->rx_fifo_depth - rx_limit;
while (buf_len > 0 && tx_limit > 0 && rx_limit > 0) {
u32 cmd = 0;
@ -671,6 +690,7 @@ i2c_dw_read(struct dw_i2c_dev *dev)
{
struct i2c_msg *msgs = dev->msgs;
int rx_valid;
u32 status;
for (; dev->msg_read_idx < dev->msgs_num; dev->msg_read_idx++) {
u32 len;
@ -687,7 +707,10 @@ i2c_dw_read(struct dw_i2c_dev *dev)
buf = dev->rx_buf;
}
status = dw_readl(dev, DW_IC_STATUS);
rx_valid = dw_readl(dev, DW_IC_RXFLR);
if (rx_valid == 0 && (status & DW_IC_STATUS_RFF))
rx_valid = DW_IC_FIFO_DEPTH;
for (; len > 0 && rx_valid > 0; len--, rx_valid--) {
u32 flags = msgs[dev->msg_read_idx].flags;
@ -752,6 +775,14 @@ i2c_dw_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num)
goto done;
}
if (!dev->cmd_err && dev->status/* == STATUS_READ_IN_PROGRESS*/) {
u32 stick = xTaskGetTickCount();
while (dev->status) {
if (xTaskGetTickCount() - stick > pdMS_TO_TICKS(500))
break;
}
}
/*
* We must disable the adapter before returning and signaling the end
* of the current transfer. Otherwise the hardware might continue
@ -961,8 +992,10 @@ static void i2c_dw_isr(void *dev_id)
enabled = dw_readl(dev, DW_IC_ENABLE);
stat = dw_readl(dev, DW_IC_RAW_INTR_STAT);
TRACE_DEBUG("enabled=%#x stat=%#x\n", enabled, stat);
if (!enabled || !(stat & ~DW_IC_INTR_ACTIVITY))
if (!enabled || !(stat & ~DW_IC_INTR_ACTIVITY)) {
dw_readl(dev, DW_IC_CLR_INTR);
return;
}
i2c_dw_irq_handler_master(dev);
}

View File

@ -10,7 +10,7 @@ extern Device_t device;
uint32_t tire_front_time = 0;
uint32_t tire_rear_time = 0;
// uint8_t save_tire_flag = 0;
uint8_t bt121_state;
uint8_t mile_flag = 0;
void TXCMD_Other_Set(unsigned char time_buffer[],uint8_t len){

View File

@ -40,8 +40,8 @@
#elif (MOTO_WARE_HOSE == MOTO_ICMX_GB518_A270S)
#define SOFT_WARE_HOST 0
#define SOFT_WARE_ORDER 13
#define HARD_WARE "MXC-A27-M V4.5"
#define SOFT_WARE_ORDER 14
#define HARD_WARE "MXC-A27-M V4.6"
#define KEY_EXCHANGE 1
#define MCU_INFO_LABEL "A270S"

View File

@ -605,6 +605,7 @@ extern uint8_t speed_flag;
void speed_convert_mile_calculation(void){
uint32_t trip = 0;
uint32_t total = 0;
uint8_t value = 0;
// printf("%d.\r\n",mile_total);
if(mile_total>KILOMETER_COUNT){//一万公里
@ -629,7 +630,13 @@ void speed_convert_mile_calculation(void){
if(veer_velocity>16384)
veer_velocity = 16384;
Set_sys_veer_velocity(veer_velocity);
Set_sys_can_temp(eng_temp);
if(eng_temp>5280)
value = 255;
else if(eng_temp>2730)
value = ((eng_temp*0.1)-273);
else
value = 0;
Set_sys_can_temp(value);
}
}

View File

@ -283,7 +283,6 @@ void BrightnessPowerOnSetting(void){
//键盘数据仿真
ret_t on_key_set_data(void* ctx, event_t* e){
double buf =0;
uint8_t value =0;
key_event_t* evt = key_event_cast(e);
// TODO: 在此添加控件事件处理程序代码
@ -310,29 +309,12 @@ ret_t on_key_set_data(void* ctx, event_t* e){
// custom_data.user_data.gas +=1;
// custom_data.temp +=1;
custom_data.eng_temp += 10;
buf = custom_data.eng_temp; //值为60-120
if(buf>5280)
buf = 255;
else if(buf>2730)
buf = ((buf*0.1)-273);
else
buf = 0;
value = (int)buf;
printf("eng_temp = %d ,value = %d.\r\n",custom_data.eng_temp,value);
printf("eng_temp = %d.\r\n",custom_data.eng_temp);
}else if(evt->key == TK_KEY_a){
// custom_data.user_data.gas -=1;
// custom_data.temp -=1;
custom_data.eng_temp -= 10;
// custom_data.eng_temp += 10;
buf = custom_data.eng_temp; //值为60-120
if(buf>5280)
buf = 255;
else if(buf>2730)
buf = ((buf*0.1)-273);
else
buf = 0;
value = (int)buf;
printf("eng_temp = %d ,value = %d.\r\n",custom_data.eng_temp,value);
printf("eng_temp = %d.\r\n",custom_data.eng_temp);
}else if(evt->key == TK_KEY_s){
if(custom_data.lamplight == 0)
custom_data.lamplight = 1;

View File

@ -475,16 +475,9 @@ void NEW_ui_data_refreshes(widget_t* win){
}
//温度 6格显示
value = Get_sys_temp(); //值为60-120
if(speed_flag){
buf = (double)Get_sys_can_temp(); //值为60-120
if(buf>5280)
buf = 255;
else if(buf>2730)
buf = ((buf*0.1)-273);
else
buf = 0;
value = (int)buf;
value = Get_sys_can_temp(); //值为60-120
// printf("temp value = %d .\r\n",value);
if(refresh_flag%20 == 0){
if(value < UI_CAN_TORAL6_GRIDS_TEMP_0)

View File

@ -473,7 +473,6 @@ static void tp_ui_refresh_temp(widget_t *win, uint16_t value) {
}
uint8_t index = 0;
uint8_t temp_icon_state; // 0为正常 1为高温红色 2为低温蓝色 3为黄色
if (speed_flag){
if(value < UI_CAN_TORAL6_GRIDS_TEMP_0)
index = 0;

View File

@ -81,7 +81,7 @@ void prompt_win_init(widget_t *win){
qr_set_value(wifi_qr, wifitext);
widget_set_text_utf8(AP, strssid);
widget_set_text_utf8(PWD, strpwd);
if(Get_sys_wifi()){
if(Get_sys_wifi_state()){
widget_set_style_str(state, "normal.text_color", "#00FF00");
if(Get_sys_language())
widget_set_text_utf8(state,"Connect");
@ -142,7 +142,7 @@ static ret_t prompt_refresh(const timer_info_t* timer){ //demo Progress bar Colo
widget_set_visible(countdown_view,FALSE);
widget_set_visible(wifi_view,FALSE);
}else{
if(Get_sys_wifi()){
if(Get_sys_wifi_state()){
widget_set_style_str(state, "normal.text_color", "#00FF00");
if(language_state)
widget_set_text_utf8(state,"Connect");
@ -179,7 +179,7 @@ static ret_t prompt_refresh(const timer_info_t* timer){ //demo Progress bar Colo
tk_snprintf(tmpStr, sizeof(tmpStr), "%d", time_countdown);
widget_set_text_utf8(countdown, tmpStr);
}else{
return_theme();//如果目标是非主demo界面or投屏界面 则返回主demo界面
return_demo();//如果目标是非主demo界面or投屏界面 则返回主demo界面
}
refresh_TIME1S_flag = xTaskGetTickCount();
}
@ -193,7 +193,7 @@ static ret_t prompt_refresh(const timer_info_t* timer){ //demo Progress bar Colo
widget_set_text_utf8(countdown, tmpStr);
}else{
wifi_flag=0;
return_theme();//如果目标是非主demo界面or投屏界面 则返回主demo界面
return_demo();//如果目标是非主demo界面or投屏界面 则返回主demo界面
}
refresh_TIME1S_flag = 0;
}else{
@ -215,7 +215,7 @@ static ret_t on_prompt_key_down(void* ctx, event_t* e) {
Set_sys_return_demo(0);
// //wifi测试
// Get_sys_wifi()?Set_sys_wifi(0):Set_sys_wifi(2);
// Get_sys_wifi_state()?Set_sys_wifi(0):Set_sys_wifi(2);
return RET_OK;
}

View File

@ -393,6 +393,8 @@ static ret_t on_timer(const idle_info_t* idle){
// Simulating_data_changes();
// custom_data.veer_velocity = 9700;
// speed_flag = 10;
speed_flag = 10;
refresh500ms_flag = 1;
#endif
widget_t* win = window_manager();
widget_t* child = window_manager_get_top_main_window(win);
@ -590,7 +592,7 @@ void* test_timer_queue(void *args){
Set_device_mac(test_mac);
Set_device_bottom_softwar_host(1);
Set_device_bottom_softwar_order(2);
Set_sys_can_temp(3830);
Set_sys_can_temp(90);
#endif
for(;;){

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -137,7 +137,7 @@
<RecentlyUsedMenus>1</RecentlyUsedMenus>
<MenuShadows>1</MenuShadows>
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay>
<CommandsUsage>F70A00008C0040E1000001000000298100000C000000088000000100000021DE00000100000013860000AB0100005984000002000000198000000100000026840000030000005786000001000000028600000100000001DC000003000000108600008404000026810000010000005684000001000000158100000300000000DA000001000000048100000500000078840000030000002CE1000002000000018100000E00000029E100000100000007E1000002000000239200000100000016B0000001000000AF060000040000003184000001000000458100000100000004E10000020000000F8100000200000020810000010000005F86000007000000ED8000000100000002B00000010000000090000005000000D884000002000000878000000A0000000C810000970100003F8100000100000001E10000070000001D8100000900000026DE0000020000000D800000020000001D92000001000000EA80000001000000A68000000100000009810000010000000486000001000000D18500000200000003DC00000400000000DC000001000000178100000500000028810000020000005686000010000000018600000100000003840000050000001A8F00000100000007B0000002000000118400000100000000840000030000002BE100000B000000808C0000010000003384000001000000478100000100000055840000180000007784000002000000148100000600000000810000010000000C860000030000000E84000001000000EF800000010000008980000001000000858400000100000028E1000001000000228100000100000083860000020000001F810000920100000E810000010000001A8600000300000003E100000A0000005E86000019000000EC8000000100000025E100002C010000978000000100000028DE0000030000000986000001000000ECFFFFFF01000000E9800000020000008E860000010000000B8100000E000000A58000000100000000E100000200000002DC00000100000014860000F9000000058400000A000000588600000100000069860000010000002B8000000100000027840000010000000386000001000000D18400000100000011860000D800000005810000200000005586000002000000278100000400000002840000030000000086000001000000F4800000010000002A8F000002000000198F000003000000168100000100000046810000FA000000108400000D0000002AE100000100000017B00000010000000BDE00000100000074860000010000000281000001000000218100000600000003B0000001000000EE80000001000000608600004B000000438100000100000044D50000010000008880000001000000A486000001000000518400000100000024E10000010000000D81000010000000088600000200000002E100000300000035E10000060000001E810000030000005D8600000B000000EB80000001000000A186000002000000D684000001000000E8800000010000000A8100000200000007840000010000000586000001000000</CommandsUsage>
<CommandsUsage>FF0A00008C0040E1000001000000298100000C000000088000000100000021DE00000100000013860000AB0100005984000002000000198000000100000026840000030000005786000001000000028600000100000001DC000003000000108600008804000026810000010000005684000001000000158100000300000000DA000001000000048100000500000078840000030000002CE1000002000000018100000E00000029E100000100000007E1000002000000239200000100000016B0000001000000AF060000040000003184000001000000458100000100000004E10000020000000F8100000200000020810000010000005F86000007000000ED8000000100000002B00000010000000090000005000000D884000002000000878000000A0000000C810000970100003F8100000100000001E10000070000001D8100000900000026DE0000020000000D800000020000001D92000001000000EA80000001000000A68000000100000009810000010000000486000001000000D18500000200000003DC00000400000000DC000001000000178100000500000028810000020000005686000010000000018600000100000003840000050000001A8F00000100000007B0000002000000118400000100000000840000030000002BE100000B000000808C0000010000003384000001000000478100000100000055840000180000007784000002000000148100000600000000810000010000000C860000030000000E84000001000000EF800000010000008980000001000000858400000100000028E1000001000000228100000100000083860000020000001F810000950100000E810000010000001A8600000300000003E100000A0000005E86000019000000EC8000000100000025E100002C010000978000000100000028DE0000030000000986000001000000ECFFFFFF01000000E9800000020000008E860000010000000B8100000E000000A58000000100000000E100000200000002DC00000100000014860000F9000000058400000A000000588600000100000069860000010000002B8000000100000027840000010000000386000001000000D18400000100000011860000D800000005810000200000005586000002000000278100000400000002840000030000000086000001000000F4800000010000002A8F000002000000198F000003000000168100000100000046810000FB000000108400000D0000002AE100000100000017B00000010000000BDE00000100000074860000010000000281000001000000218100000600000003B0000001000000EE80000001000000608600004B000000438100000100000044D50000010000008880000001000000A486000001000000518400000100000024E10000010000000D81000010000000088600000200000002E100000300000035E10000060000001E810000030000005D8600000B000000EB80000001000000A186000002000000D684000001000000E8800000010000000A8100000200000007840000010000000586000001000000</CommandsUsage>
</MFCToolBarParameters>
<CommandManager>
<CommandsWithoutImages>4C0008800000098000000A8000000B8000000C800000158000000A810000FFFFFFFF01E8000012810000D2840000D1850000D78600000C84000033840000788400001184000020DE000021DE000026DE000028DE000023DE000022DE000024DE000027DE000025DE000020920000289200002992000037920000389200003492000033920000259200001E92000000DC000001DC000002DC000003DC0000748600007784000007840000808C000044D50000838600005886000004DC000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000CB000000DB000000EB0000000B00000248100002AE10000008200001C82000001820000678600000088000001880000028800000388000004880000058800004881000001000000</CommandsWithoutImages>
@ -880,7 +880,7 @@
</BasePane-34049>
<MFCToolBar-34050>
<Name>Main</Name>
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000064000000FFFEFF000000000000000000000000000100000001000000018001E100000000000065000000FFFEFF000000000000000000000000000100000001000000018003E100000000000067000000FFFEFF0000000000000000000000000001000000010000000180008100000000000048000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006C000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006B000000FFFEFF000000000000000000000000000100000001000000018025E10000000000006E000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040071000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040072000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005B000000FFFEFF000000000000000000000000000100000001000000018024E10000000000006D000000FFFEFF000000000000000000000000000100000001000000018028E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018029E100000000000070000000FFFEFF000000000000000000000000000100000001000000018002810000000000004A000000FFFEFF000000000000000000000000000100000001000000018029810000000000005F000000FFFEFF000000000000000000000000000100000001000000018027810000000000005D000000FFFEFF000000000000000000000000000100000001000000018028810000000000005E000000FFFEFF00000000000000000000000000010000000100000001801D8100000000000057000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040058000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000004E000000FFFEFF00000000000000000000000000010000000100000001800C810000000000004F000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000063000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000000000059000000FFFEFF000000000000000000000000000100000001000000018020810000000000005A000000FFFEFF0000000000000000000000000001000000010000000180468100000000020061000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons>
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000064000000FFFEFF000000000000000000000000000100000001000000018001E100000000000065000000FFFEFF000000000000000000000000000100000001000000018003E100000000000067000000FFFEFF0000000000000000000000000001000000010000000180008100000000000048000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006C000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006B000000FFFEFF000000000000000000000000000100000001000000018025E10000000000006E000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040071000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040072000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000000018021810000000004005B000000FFFEFF000000000000000000000000000100000001000000018024E10000000000006D000000FFFEFF000000000000000000000000000100000001000000018028E10000000004006F000000FFFEFF000000000000000000000000000100000001000000018029E100000000000070000000FFFEFF000000000000000000000000000100000001000000018002810000000000004A000000FFFEFF000000000000000000000000000100000001000000018029810000000000005F000000FFFEFF000000000000000000000000000100000001000000018027810000000000005D000000FFFEFF000000000000000000000000000100000001000000018028810000000000005E000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040057000000FFFEFF00000000000000000000000000010000000100000001801E8100000000040058000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B810000000000004E000000FFFEFF00000000000000000000000000010000000100000001800C810000000000004F000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000063000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F8100000000000059000000FFFEFF000000000000000000000000000100000001000000018020810000000000005A000000FFFEFF0000000000000000000000000001000000010000000180468100000000020061000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons>
</MFCToolBar-34050>
<Pane-34050>
<ID>34050</ID>

View File

@ -19,7 +19,7 @@
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
</JLinkDriver>
<DebugChecksum>
<Checksum>4259612989</Checksum>
<Checksum>1356576539</Checksum>
</DebugChecksum>
<Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught>

File diff suppressed because one or more lines are too long