您好!
通过将端口设置为16位并将 GLBCTRL 寄存 器分配为如下、我能够使 RTP 在直接数据模式下工作:我允许时钟自由运行、并且我禁用 RTPENA 引脚、以便它可以溢出。 在这个配置后写入 DDMW (加上启用端口16位、无 ENA 引脚)所有引脚输出、ENA 除外。
rtpREG->GLBCTRL =((UINT32) 0U \
|(uint32)((uint32) 1U << 1U)\
|(uint32)((uint32) 0U << 2U)\
|(uint32)((uint32) 1U << 3U)\
|(uint32)((uint32) 0U << 4U)\
|(uint32)((uint32) 0U << 5U)\
|(uint32)((uint32) 1U << 6U)\
|(uint32)((uint32) 0U << 7U)\
|(uint32)((uint32) 1U << 8U)\
|(uint32)((uint32) 1U << 9U)\
|(uint32)((uint32) 1U << 10U)\
|(uint32)((uint32) 1U << 11U)\
|(uint32)((uint32) 0U << 12U)\
|(uint32)((uint32) 1U << 13U)\
|(uint32)((uint32) 0U << 14U)\
|(uint32)((uint32) 0U << 15U)\
|(uint32)((uint32) 1U << 16U)\
|(uint32)((uint32) 1U << 17U)\
|(uint32)((uint32) 1U <<18U);
/**- RTP 端口输出值*/
rtpREG->PC3 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口方向*/
rtpREG->PC1 =(UINT32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口开漏启用*/
rtpREG->PC6 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口上拉/下拉选择*/
rtpREG->PC8 =(uint32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(uint32)((uint32) 1U << 18U);/* RTP ENA*
/**- RTP 端口上拉/下拉使能*/
rtpREG->PC7 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/* RTP 将所有引脚设置为功能*/
rtpREG->PC0 =(uint32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
但是、当我尝试将端口配置为跟踪模式时、 并使用0x08001000的存储器地址并使用以下代码开启跟踪;当我尝试写入0x08001000至0x08001FFF 范围内的某个地址时、我看不到 RTP 跟踪时钟或任何数据发出。
//设置全局跟踪参数:
//0 FIFO RAM 未映射
//111 HCLK/8 (针对更快速度进行调整)
//00保留
///00 DDM 宽度不是跟踪模式所必需的
跟踪模式不需要//0 DDM_RW
//0跟踪模式
//11 16位宽
//0超出复位状态
//1 clk 自由运行(?)
//0目前无溢出保护
定义区域内的//0跟踪
//1010启用跟踪("0xA")
rtpREG->GLBCTRL =((UINT32) 0U \
|(uint32)((uint32) 1U << 1U)\
|(uint32)((uint32) 0U << 2U)\
|(uint32)((uint32) 1U << 3U)\
|(uint32)((uint32) 0U << 4U)\
|(uint32)((uint32) 0U << 5U)\
|(uint32)((uint32) 1U << 6U)\
|(uint32)((uint32) 0U << 7U)\
|(uint32)((uint32) 1U << 8U)\
|(uint32)((uint32) 1U << 9U)\
|(uint32)((uint32) 0U << 10U)\
|(uint32)((uint32) 0U << 11U)\
|(uint32)((uint32) 0U << 12U)\
|(uint32)((uint32) 0U << 13U)\
|(uint32)((uint32) 0U << 14U)\
|(uint32)((uint32) 0U << 15U)\
|(uint32)((uint32) 1U << 16U)\
|(uint32)((uint32) 1U << 17U)\
|(uint32)((uint32) 1U <<18U);
端口配置寄存器与之前相同:
/**- RTP 端口输出值*/
rtpREG->PC3 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口方向*/
rtpREG->PC1 =(UINT32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口开漏启用*/
rtpREG->PC6 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/**- RTP 端口上拉/下拉选择*/
rtpREG->PC8 =(uint32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(uint32)((uint32) 1U << 18U);/* RTP ENA*
/**- RTP 端口上拉/下拉使能*/
rtpREG->PC7 =(uint32) 0U /* data[0]*/
|(uint32)((uint32) 0U << 1U)/* data[1]*/
|(uint32)((uint32) 0U << 2U)/* data[2]*/
|(uint32)((uint32) 0U << 3U)/* data[3]*/
|(uint32)((uint32) 0U << 4U)/* data[4]*/
|(uint32)((uint32) 0U << 5U)/* data[5]*/
|(uint32)((uint32) 0U << 6U)/* data[6]*/
|(uint32)((uint32) 0U << 7U)/* data[7]*/
|(uint32)((uint32) 0U << 8U)/* data[8]*/
|(uint32)((uint32) 0U << 9U)/* data[9]*/
|(uint32)((uint32) 0U << 10U)/* data[10]*/
|(uint32)((uint32) 0U << 11U)/* data[11]*/
|(uint32)((uint32) 0U << 12U)/* data[12]*/
|(uint32)((uint32) 0U << 13U)/* data[13]*/
|(uint32)((uint32) 0U << 14U)/* data[14]*/
|(uint32)((uint32) 0U << 15U)/* data[15]*/
|(UINT32)((UINT32) 0U << 16U)/* RTP SYNC */
|(UINT32)((UINT32) 0U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
/* RTP 将所有引脚设置为功能*/
rtpREG->PC0 =(uint32) 1U /* data[0]*/
|(uint32)((uint32) 1U << 1U)/* data[1]*/
|(uint32)((uint32) 1U << 2U)/* data[2]*/
|(uint32)((uint32) 1U << 3U)/* data[3]*/
|(uint32)((uint32) 1U << 4U)/* data[4]*/
|(uint32)((uint32) 1U << 5U)/* data[5]*/
|(uint32)((uint32) 1U << 6U)/* data[6]*/
|(uint32)((uint32) 1U << 7U)/* data[7]*/
|(uint32)((uint32) 1U << 8U)/* data[8]*/
|(uint32)((uint32) 1U << 9U)/* data[9]*/
|(uint32)((uint32) 1U << 10U)/* data[10]*/
|(uint32)((uint32) 1U << 11U)/* data[11]*/
|(uint32)((uint32) 1U <<12U)/* data[12]*/
|(uint32)((uint32) 1U << 13U)/* data[13]*/
|(uint32)((uint32) 1U << 14U)/* data[14]*/
|(uint32)((uint32) 1U << 15U)/* data[15]*/
|(UINT32)((UINT32) 1U << 16U)/* RTP SYNC */
|(uint32)((uint32) 1U << 17U)/* RTP CLK */
|(UINT32)((UINT32) 0U << 18U);/* RTP ENA *
//map 1K from memory region 8001000、only writes
rtpREG->RAM1REG1 =0x13001000;
//为 RAM 块1设置跟踪
rtpREG->TRENA|=0x01;
当我用 rtpInit()初始化 RTP 并为内存分配一个指针以进行内存读取/写入时:
uint32_t* MemRegion=(uint32_t *) 0x08001000;
我写这个存储器区域*MemRegion=0xAA55AA55 (或0x08001000到0x08001FFF 区域中的任何位置)
跟踪端口不应自动复制该区域并将其发送到 FIFO 以从端口进行传输?
最棒的
Josh Karch