mdc can总线配置及收发

本文详细介绍了MDC通信架构中HOST(鲲鹏920)与MCU间通过SOMEIP/DDS方式通信的过程,包括华为提供的CAN配置脚本使用方法,如何利用在线JSON编辑器提高配置效率,以及配置文件的注意事项。同时,文章还提供了下发配置文件给MCU的具体步骤,测试CAN收发的方法。

mdc 通信架构

在这里插入图片描述HOST(鲲鹏920) 和MCU之间通过SOMEIP/DDS 的方式来完成通讯
在这里插入图片描述
华为提供了对can的配置脚本在/home/mdc/conf 目录下来配置mcu接收和发送哪些canid的消息到host. 这里还是要吐槽下现在的版本,配置实在太繁琐了,每个canid 都需要在响应的配置文件中描述,一辆车要是有十几二十来个canid的消息需要收发的话,配置文件轻轻松松万把来行
在这里插入图片描述
这里推荐一个在线的Json编辑网站https://www.bejson.com/jsoneditoronline/8
在这里插入图片描述
可以直接在模板配置文件下复制,效率及高.写好配置文件后,要注意检查,该有双引号就要有双引号,不该有的地方就不能有,否则下发配置文件给mcu的时候就会超时出错.

下发mcu的can配置文件

在MDC的“/home/mdc/bin”路径下,执行./devmTool.sh命令

<
<think>我们正在配置ZYNQ的Processing System (PS) Block Design。根据用户需求,需要详细配置以下参数: 1. 时钟设置: - PS端时钟(PS_CLK): 33.33 MHz - PS内核时钟(CPU频率): 800 MHz - FCLK(PL Fabric Clock): 100 MHz - DDR时钟速率: 1066 MHz(对应DDR3型号MT41K256M16-125) 2. DDR配置: - 选择DDR型号:MT41K256M16-125 3. 外设接口: - 1个SPI Flash - 1个eMMC Flash - 2个网口(每个网口有独立的MDIO和MDC,即两个网口完全独立) - 2个UART口 - 1个I2C接口 - 1个CAN接口 4. 引出信号: - AXI时钟和复位信号 - 一个双向DMA(通常指ACP或HP端口,但用户指定了HP总线,所以配置一个HP端口) - 一个32位宽、4096深度的BRAM接口(这里应该是通过AXI BRAM控制器连接到PS的AXI端口) - 一个UART-16550串口(收发) 注意:ZYNQ的PS端配置是通过ZYNQ7 Processing System IP核完成的。 步骤: 1. 创建Block Design,添加ZYNQ7 Processing System IP核。 2. 双击IP核打开配置界面(Re-customize IP)。 配置过程: 一、时钟设置(Clock Configuration): - 在“Clock Configuration”选项卡中: - 找到“Input Clock Frequency”,设置为33.333333 MHz(即33.33 MHz)。 - 在“PL Fabric Clocks”中,使能FCLK_CLK0,并设置其频率为100 MHz。 - 在“CPU Clock”中,设置ARM PLL为800 MHz(注意:实际配置时,我们通过设置CPU频率为800 MHz,Vivado会自动配置PLL)。 - DDR时钟:在“DDR Clock Configuration”中,选择DDR3,频率设置为533 MHz(因为DDR是双倍数据速率,所以实际有效频率为1066 MHz)。注意:DDR控制器时钟由DDR PLL产生,选择1066 Mbps(对应533 MHz时钟)。 二、DDR配置(DDR Configuration): - 在“DDR Configuration”选项卡中: - 选择“Memory Part”为“MT41K256M16XX-125”(注意核对型号,可能需要翻页查找)。 - 其他DDR参数保持默认(如电压等)。 三、外设接口(Peripheral I/O Configuration): - 在“Peripheral I/O Pins”选项卡中: - 配置SPI:勾选SPI0(或SPI1)Flash,这里假设使用SPI0。注意:SPI Flash通常用于启动设备。 - 配置eMMC:在“SDIO peripherals”中,勾选SD0(并选择eMMC模式)或SD1(根据需求选择,通常SD0支持eMMC)。注意:eMMC是SDIO接口的一种模式。 - 配置两个网口:使能两个以太网控制器(勾选ENET0和ENET1),并确保它们的MDIO接口独立(默认情况下,每个以太网控制器都有自己的MDIO和MDC)。 - UART:使能UART0和UART1(注意:用户要求两个UART口,所以我们使能两个)。 - I2C:使能I2C0或I2C1(根据需求选择一个,例如I2C0)。 - CAN:使能CAN0或CAN1(例如CAN0)。 四、MIO配置(MIO Configuration): - 在“MIO Configuration”子选项卡中,查看各外设的引脚分配,确保没有冲突。一般情况下,Vivado会自动分配MIO引脚。如果需要特定引脚,可以手动调整。 五、PS-PL接口配置(PS-PL Configuration): - 在“PS-PL Configuration”选项卡中: - 使能一个HP端口(例如HP0):在“Slave Interface”或“Master Interface”中,找到“HP Slave AXI Interface”,勾选S_AXI_HP0(用于HP总线)。注意:用户要求引出HP总线,这里我们使能一个HP接口。 - 配置AXI时钟和复位信号:在“General”部分,确保“FCLK_CLK0”被使能(前面时钟配置已做),并且勾选“FCLK_RESET0_N”。这样,FCLK_CLK0和FCLK_RESET0_N就会引出到PL。 - 配置DMA:在“AXI Non Secure Enablement”中,找到“GP AXI Master Ports”,用户要求双向DMA,通常我们需要使能一个ACP端口(用于加速一致性传输)或者HP端口(用于高性能数据传输)。但用户同时要求了HP总线和双向DMA,这里我们理解用户需要两个独立的接口:一个HP总线和另一个用于DMA的接口。由于ZYNQ的DMA通常通过HP或ACP端口实现,我们可以使能两个HP端口:一个作为HP总线(用户要求引出),另一个用于DMA。或者,用户可能希望有一个AXI DMA控制器连接到HP端口,然后在PL端实现。这里我们先按照使能两个HP端口来配置(HP0和HP1),其中HP0作为用户提到的“HP总线”,另一个HP1用于DMA(但注意,DMA控制器需要在PL中实现,PS端只是提供接口)。或者,用户可能要求PS端的DMA控制器,但PS端的DMA控制器是内置的,通常通过HP端口与PL交互。因此,我们只需使能HP0(作为HP总线)和HP1(用于DMA传输)即可满足需求?注意:用户要求“引出双向DMA和一个HP总线”,所以我们可以这样处理: - 使能两个HP接口:HP0和HP1(或者ACP和HP0,但ACP只有一个)。这里我们使能两个HP接口:HP0和HP1,其中HP0作为HP总线,HP1作为DMA的接口(但具体用途由PL端决定)。 - 此外,用户还要求引出一个32位宽、4096深度的BRAM接口。这个BRAM接口需要通过一个AXI BRAM控制器连接到PS的AXI端口。我们可以在PS上使能一个GP端口(Master或Slave)来连接AXI BRAM控制器。通常,我们使用GP Slave接口(S_AXI_GP0)来连接PL端的AXI BRAM控制器。因此,在“PS-PL Configuration”中,找到“General”下的“Slave Interface”,勾选S_AXI_GP0(或GP1)。 - 另外,用户要求引出一个UART-16550串口。PS端已经配置了两个UART,但这两个是通过MIO连接到外部引脚。用户要求引出的UART-16550可能是通过PL实现的,即使用AXI UART 16550 IP核,然后连接到PS的某个AXI接口(如GP0)。所以,我们不需要在PS中额外配置UART,只需要提供一个AXI接口给PL使用即可(前面已经使能了GP0)。 总结PS-PL接口部分: - 时钟和复位:使能FCLK_CLK0和FCLK_RESET0_N(前面已经设置)。 - 使能两个HP接口:S_AXI_HP0和S_AXI_HP1(用于高速数据传输,HP0作为用户要求的HP总线,HP1用于DMA)。 - 使能一个GP Slave接口:S_AXI_GP0(用于连接PL端的AXI BRAM控制器和UART-16550控制器)。 - 注意:AXI接口的时钟一般使用FCLK_CLK0(100 MHz),所以需要确保HP接口和GP接口的时钟源都设置为FCLK_CLK0。 六、中断配置(Interrupts): - 在“Interrupts”选项卡中,可以保持默认(PL-PS中断使能),因为PL端可能有中断请求(如DMA完成中断、UART中断等)。 七、完成配置后,点击“OK”,然后在Block Design中可以看到ZYNQ IP核的接口已经按照需求引出。 八、连接AXI接口: - 在Block Design中,我们需要添加AXI BRAM控制器和BRAM。然后连接: - ZYNQ的S_AXI_GP0(GP Slave)连接到AXI BRAM控制器的S_AXI接口。 - AXI BRAM控制器的BRAM_PORTA连接到BRAM的端口。 - BRAM配置为32位宽,4096深度(即32位*4096=128KB)。 - 对于UART-16550,添加AXI UART 16550 IP核,将其S_AXI接口连接到ZYNQ的S_AXI_GP0(同一个GP0接口,所以需要AXI互联IP来连接多个Slave)。 因此,我们还需要添加AXI Interconnect IP核,将ZYNQ的S_AXI_GP0连接到AXI Interconnect的主端口,然后将AXI Interconnect的两个从端口分别连接到AXI BRAM控制器和AXI UART 16550。 九、引出其他信号: - 将ZYNQ的HP0和HP1接口引出(作为顶层端口),这样用户可以在PL中连接到其他模块(如DMA控制器)。 - 将UART-16550的串行信号(RX和TX)引出为顶层端口。 注意:用户要求引出的信号包括: - AXI时钟(FCLK_CLK0)和复位(FCLK_RESET0_N) - 双向DMA接口(这里我们用S_AXI_HP1作为DMA接口)和HP总线(S_AXI_HP0) - BRAM接口(实际是连接到了BRAM,但BRAM位于PL端,所以需要将BRAM的接口引出?但是用户要求的是BRAM接口,可能是指通过AXI接口访问BRAM,所以我们已经通过S_AXI_GP0连接了AXI BRAM控制器,然后BRAM控制器连接了一个BRAM,这个BRAM是PL端的,所以需要将BRAM的端口引出为顶层?但是一般来说,BRAM是内部使用,所以用户可能不需要将其端口引出,而是通过AXI接口访问。所以这里我们只需确保AXI接口连接正确即可。用户提到的“引出BRAM接口”应该是指提供AXI接口给外部逻辑访问BRAM?但根据上下文,用户应该是希望有一个BRAM供PS和PL共享,所以我们已经配置好了。) 十、验证连接: - 确保所有接口连接正确,然后运行自动连接(Run Connection Automation),Vivado会自动添加必要的AXI互联和复位处理等。 由于配置步骤较多,下面按主要步骤描述: 步骤1:添加并配置ZYNQ IP核 双击ZYNQ IP核,按照上述配置各个选项卡。 步骤2:在Block Design中添加其他IP并连接 - 添加AXI BRAM Controller:配置为1个BRAM端口,数据宽度32位。 - 添加Block Memory Generator:配置为32位宽,4096深度(即16K×32,总大小128KB),类型为True Dual Port或Single Port(根据需求,如果是PS和PL共享,通常使用True Dual Port,一个端口给PS,一个给PL使用?但是这里我们使用的是AXI BRAM控制器,所以它内部使用一个端口,另一个端口可以留给PL直接访问?但通常AXI BRAM控制器只提供一个BRAM接口,所以如果PL需要直接访问,可能需要另一个端口,但用户没有要求,所以先配置为单端口。注意:AXI BRAM控制器本身就是一个AXI接口转BRAM接口的控制器,所以PL可以通过AXI接口访问,不需要直接BRAM端口。所以这里我们使用单端口BRAM即可,由AXI BRAM控制器管理。) - 添加AXI UART 16550:这个是用于提供额外的UART-16550串口(用户要求引出的)。 - 添加AXI Interconnect:用于将S_AXI_GP0连接到多个Slave设备(BRAM控制器和UART16550)。 步骤3:连接 - 连接ZYNQ的S_AXI_GP0到AXI Interconnect的S00_AXI(Slave接口)。 - 连接AXI Interconnect的M00_AXI到AXI BRAM控制器的S_AXI接口。 - 连接AXI Interconnect的M01_AXI到AXI UART 16550的S_AXI接口。 - 连接AXI BRAM控制器的BRAM_PORTA到Block Memory Generator的BRAM_PORTA。 - 连接ZYNQ的FCLK_CLK0到所有外设IP的s_axi_aclk以及AXI Interconnect的ACLK。 - 连接ZYNQ的FCLK_RESET0_N到所有外设IP的s_axi_aresetn以及AXI Interconnect的ARESETN(注意复位是低有效,且需要同步复位)。 步骤4:引出信号 - 将ZYNQ的S_AXI_HP0和S_AXI_HP1引出为顶层端口(右键点击接口,选择Make External)。 - 将AXI UART 16550的串口信号(sout和sin)引出为顶层端口(命名为UART_16550_TX和UART_16550_RX)。 - 将ZYNQ的FCLK_CLK0和FCLK_RESET0_N(复位是低有效)引出为顶层端口。 步骤5:验证设计 - 运行Validate Design(F6),确保没有错误。 注意:由于配置细节非常多,以上步骤是概括性的。具体操作中,可能会根据Vivado版本和具体需求微调。 最后,用户要求配置的ZYNQ Block Design涉及多个方面的配置,务必仔细核对每一项。 生成的相关问题: 1. 如何配置ZYNQ的DDR参数以匹配不同的内存芯片? 2. 在ZYNQ中如何通过HP接口实现高速数据传输? 3. 如何为ZYNQ PS添加自定义的AXI外设? </think>以下是Vivado中配置ZYNQ Processing System IP核的详细步骤,严格遵循您的要求: ### 一、基础时钟配置 1. **添加ZYNQ IP核** 在Block Design中点击"+" → 搜索`zynq` → 选择`ZYNQ7 Processing System` → 双击IP核进入配置。 2. **时钟树设置** ```mermaid graph LR A[PS_CLK 33.33MHz] --> B[Clock Configuration] B --> C[CPU Clock 800MHz] B --> D[FCLK_CLK0 100MHz] B --> E[DDR Clock 533MHz] ``` - **Clock Configuration**选项卡: - 输入时钟:`33.333333`(PS端时钟) - CPU频率:`800 MHz` - PL Fabric Clocks:勾选`FCLK_CLK0` → 设置`100 MHz` - **DDR Configuration**选项卡: - 选择内存型号:`MT41K256M16 - 125` - DDR时钟频率:`1066 MHz`(自动计算为533MHz物理时钟) ### 二、外设接口配置 进入**Peripheral I/O Pins**选项卡: 1. **存储接口** - SPI Flash:勾选`SPI0`或`SPI1` → MIO分配 - eMMC Flash:勾选`SD0` → 模式选`eMMC` 2. **网络接口** - 以太网0:勾选`ENET0` → 独立`MDIO0` - 以太网1:勾选`ENET1` → 独立`MDIO1` 3. **通信接口** - UART:勾选`UART0`和`UART1` - I2C:勾选`I2C0` - CAN:勾选`CAN0` > 引脚分配需在**MIO Configuration**子选项卡手动调整避免冲突[^2] ### 三、PS-PL接口配置 进入**PS-PL Configuration**选项卡: 1. **AXI时钟与复位** ```verilog // 自动生成的连接代码 assign FCLK_CLK0 = zynq_inst/FCLK_CLK0; // 100MHz时钟 assign FCLK_RESET0_N = zynq_inst/FCLK_RESET0_N; // 复位信号 ``` - 勾选`FCLK_CLK0`和`FCLK_RESET0_N` 2. **HP总线与DMA** - 高性能接口:勾选`S_AXI_HP0`(用于HP总线) - ACP接口:勾选`S_AXI_ACP`(用于双向DMA) 3. **BRAM接口配置** - 从接口:勾选`S_AXI_GP0` - 在PL端添加: - AXI BRAM Controller(数据宽度32位) - Block Memory Generator(深度4096) 4. **UART-16550扩展** - 添加AXI UART 16550 IP → 连接至`S_AXI_GP0` ### 四、最终设计结构 ```mermaid graph TB ZYNQ[ZYNQ PS] -->|AXI_HP0| HP[HP总线] ZYNQ -->|S_AXI_ACP| DMA[双向DMA] ZYNQ -->|FCLK_CLK0| CLK[全局时钟] ZYNQ -->|S_AXI_GP0| BRAM[32位4096深度BRAM] ZYNQ -->|S_AXI_GP0| UART16550[UART-16550] ``` ### 验证要点 1. 时钟一致性检查:确保DDR实际频率为`1066 MHz` 2. 资源冲突检查:在**Address Editor**验证BRAM地址映射 3. 连接性验证:运行`Validate Design`解决AXI关联错误[^3] > 配置完成后点击"Run Block Automation"自动连接复位和中断信号[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值