将mstStartup和slvStartup代码合二为一;增加mtime的驱动代码
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include "tl2cdr.h"
|
||||
#include "halfLvdsMacSvr.h"
|
||||
#include "plic.h"
|
||||
#include "clint.h"
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
uint8_t MST_TX_BUF[TX_BUF_NUM * TX_BUF_MAX_LEN] __attribute__((aligned(32)));
|
||||
@@ -13,12 +14,8 @@ uint8_t MST_RX_BUF[RX_BUF_NUM * RX_BUF_MAX_LEN] __attribute__((aligned(32)));
|
||||
extern const uint8_t int_svr_code[];
|
||||
uint32_t (*sys_call)(uint32_t no, ...);
|
||||
|
||||
|
||||
|
||||
|
||||
static uint32_t HLM_slave_poll(void);
|
||||
|
||||
volatile uint32_t isr_flag[32] = {0};
|
||||
volatile uint32_t exti_isr_flag[32] = {0};
|
||||
|
||||
uint32_t HLM_poll(uint32_t mode)
|
||||
{
|
||||
@@ -36,12 +33,12 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
uint32_t rx_pkt_len = 0;
|
||||
uint32_t rx_start = 0;
|
||||
uint32_t status;
|
||||
uint32_t is_exit = 0;
|
||||
|
||||
uint32_t i;
|
||||
uint32_t *tx_data_ptr = (uint32_t *)MST_TX_BUF;
|
||||
uint32_t *rx_data_ptr = (uint32_t *)MST_RX_BUF;
|
||||
|
||||
|
||||
//准备数据
|
||||
for (i = 0; i < tx_pkt_len; i++)
|
||||
MST_TX_BUF[i] = i;
|
||||
@@ -65,7 +62,7 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
break;
|
||||
}
|
||||
|
||||
while (1)
|
||||
while (!is_exit)
|
||||
{
|
||||
status = *HLM_status;
|
||||
|
||||
@@ -95,18 +92,20 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
{
|
||||
rx_start = 0;
|
||||
rx_index = 0;
|
||||
is_exit = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isr_flag[CDR_INT_RX1START])
|
||||
if (exti_isr_flag[CDR_INT_RX1START])
|
||||
{
|
||||
isr_flag[CDR_INT_RX1START] = 0;
|
||||
exti_isr_flag[CDR_INT_RX1START] = 0;
|
||||
rx_start = 1;
|
||||
rx_index = 0;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (mode == WORKMODE_SLAVE)
|
||||
{
|
||||
@@ -133,6 +132,7 @@ uint32_t HLM_slave_poll(void)
|
||||
|
||||
uint32_t status;
|
||||
uint32_t is_terminal = 1;
|
||||
uint32_t detect_status = 1;
|
||||
|
||||
//填充检测下行设备的包
|
||||
uint32_t detect_pkt = MAGIC_NUM;
|
||||
@@ -146,13 +146,13 @@ uint32_t HLM_slave_poll(void)
|
||||
*plic_enable_0_31 = 0;
|
||||
|
||||
|
||||
set_mtimer(100);
|
||||
enable_mtimer_int();
|
||||
|
||||
|
||||
#ifdef __riscv_e
|
||||
sys_call(SYS_SLAVE_WORK);
|
||||
#else
|
||||
|
||||
|
||||
|
||||
|
||||
while (1)
|
||||
{
|
||||
@@ -164,7 +164,7 @@ uint32_t HLM_slave_poll(void)
|
||||
|
||||
for (i = 0; i < HLM_RX0_FIFO_LEFT(status); i++)
|
||||
{
|
||||
if (down_rx_start) // && (status & HLM_RX0_VALID))
|
||||
if (down_rx_start)
|
||||
{//处理上行接收
|
||||
uint32_t data;
|
||||
data = *rx0_rxFifo;
|
||||
@@ -181,8 +181,6 @@ uint32_t HLM_slave_poll(void)
|
||||
down_rx_start = 0;
|
||||
break;
|
||||
}
|
||||
if ((rx_index & 0x1f) == 10)
|
||||
detect_start = 1;
|
||||
}
|
||||
else
|
||||
break;
|
||||
@@ -206,8 +204,15 @@ uint32_t HLM_slave_poll(void)
|
||||
{
|
||||
*rx1_softReset = 1;
|
||||
*tx0_softReset = 1;
|
||||
detect_status = 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (mtimer_int_flag)
|
||||
{
|
||||
mtimer_int_flag = 0;
|
||||
detect_start = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{//不是终节点
|
||||
@@ -219,5 +224,3 @@ uint32_t HLM_slave_poll(void)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user