Xilinx 上的 C lanc 中的 NEC 红外传输协议

问题描述 投票:0回答:1

我需要使用 Xilinx FPGA 上的 GPIO 引脚捕获和解码红外信号(使用 NEC 红外协议),并在控制台上显示信号的内容。我收到地址上的信号

XPAR_GPIO_IR_BASEADDR // 0x40040000

如何获取该寄存器的内容并将其放入另一个变量中,然后用于解码信号?

u32 packet

这部分的目标是获取从 IR 接收到的值,然后将其插入到数据包变量中,如上所示。然后该变量将用于其他操作。

c fpga xilinx bare-metal infrared
1个回答
0
投票

该宏定义就是外设的绝对地址。因此,如果您没有为系统生成驱动程序并且没有可用的函数 - 那么对于 C 语言,您只需将该地址转换为与寄存器大小匹配的类型的易失性指针,然后取消引用它。

基本上你会做

u32 value = *(volatile u32 *)XPAR_GPIO_IR_BASEADDR;

Vitis 生成的 BSP 包括便利函数

Xil_In32()
Xil_Out32()
,以及其他数据大小的函数,基本上做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.