按照状态寄存器里各个fifo的剩余字节工作,测试代码完成。测试主站正常工作
This commit is contained in:
@@ -77,27 +77,28 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
{
|
||||
status = *HLM_status;
|
||||
|
||||
if (((tx_index * 4) < tx_pkt_len) && (!(status & HLM_TX0_FIFO_FULL)))
|
||||
for (i = 0; i < HLM_TX_FIFO_LEN - HLM_TX0_FIFO_LEFT(status); i++)
|
||||
{
|
||||
if ((tx_index * 4) < tx_pkt_len)
|
||||
{
|
||||
*tx0_txFifo = tx_data_ptr[tx_index];
|
||||
tx_index++;
|
||||
}
|
||||
|
||||
status = *HLM_status;
|
||||
|
||||
if (((tx_index * 4) < tx_pkt_len) && (!(status & HLM_TX0_FIFO_FULL)))
|
||||
{
|
||||
*tx0_txFifo = tx_data_ptr[tx_index];
|
||||
tx_index++;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
if ((rx_start) && (status & HLM_RX1_VALID))
|
||||
for (i = 0; i < HLM_RX1_FIFO_LEFT(status); i++)
|
||||
{
|
||||
//if ((rx_start) && (status & HLM_RX1_VALID))
|
||||
if (rx_start)
|
||||
{
|
||||
rx_data_ptr[rx_index] = *rx1_rxFifo;
|
||||
if (rx_index == 0)
|
||||
rx_pkt_len = (rx_data_ptr[rx_index] >> 20) + 4;
|
||||
|
||||
rx_index++;
|
||||
|
||||
if (rx_pkt_len <= (rx_index * 4))
|
||||
{
|
||||
rx_start = 0;
|
||||
@@ -105,6 +106,7 @@ uint32_t HLM_poll(uint32_t mode)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isr_flag[CDR_INT_RX1START])
|
||||
{
|
||||
|
||||
@@ -47,6 +47,10 @@
|
||||
#define HLM_RX0_VALID (1U<<6U)
|
||||
#define HLM_RX1_VALID (1U<<7U)
|
||||
|
||||
#define HLM_RX0_FIFO_LEFT(s) (((s) >> 8) & 0x1f)
|
||||
#define HLM_RX1_FIFO_LEFT(s) (((s) >> (8 + 5)) & 0x1f)
|
||||
#define HLM_TX0_FIFO_LEFT(s) (((s) >> (8 + 10)) & 0x1f)
|
||||
#define HLM_TX1_FIFO_LEFT(s) (((s) >> (8 + 15)) & 0x1f)
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
extern volatile uint32_t * const tx0_softReset;
|
||||
|
||||
Reference in New Issue
Block a user