1. IP设置:
接口说明:
APB接口用于配置IP内部寄存器、控制CAN报文收发;
can_clk:默认给40Mhz;
can_clk_x2:与can_clk同源,默认给80MHz;
apb_clk:系统时钟;
波特率计算:
80MHz / 2 / ((1+BRP)*((1+(1+TESG1)+(1+TESG2)));
寄存器表:
基地址0x0000:IP核控制寄存器;
基地址0x0100:TX寄存器;
基地址0x2000:RX寄存器;
基地址+0x0100(或0x0148...):CAN ID、扩展帧标识IDE;
基地址+0x0104(或0x014C...):CAN报文字节长度、CANFD类型标识;
基地址+0x0108(或0x0150...):CAN报文数据0-3字节;
基地址+0x010C(或0x0154...):CAN报文数据4-7字节;
基地址+0x0110(或0x0158...):CAN报文数据8-11字节;
。。。
配置步骤:
IP核配置:
1. 复位IP核,对地址0x0000写数据0x00000001;
2. 读取地址0x0018数据,获取IP状态,确保在配置模式下;
3. 设置BRP,对地址0x0008的bit7-0写BRP值,如0x00000001,即BRP=1;
4. 设置SJW、TESG1、TESG2的值,对地址0x000C写值,如0x00040421,即SJW=4,TESG1=33,TESG2=4,则波特率=80Mhz / 2 / ((1+1)*((1+(1+33)+(1+4))) = 40Mhz / (2*40) = 500k;
5. 设置数据BRP、SJW、TESG1、TESG2,当CANFD数据域与控制域的波特率不一样时(BRS=1),数据域的波特率使用该BRP、TESG1、TESG2计算,如当设置can时钟为30MHz时:
地址0x0088写0,设置BRP=0;
地址0x008C写0x0001020A,设置SJW=1,TS2=2,TS1=10;
波特率:60MHz / 2 / ((1+0)*(1+(1+2)+(1+10))) = 2Mbps;
6. 设置中断使能,地址0x0020写32‘hFFFFFFFF;
7.(可选)如果要设置接收报文过滤,地址0x0a00写入32’hFFE7FFFE,在地址0x0A04写入要接收的ID号;
8. 设置接收过滤UAF(不知道是啥-。-),地址0x00E0写入0x3;
9. 设置RX FIFO水印寄存器0x00EC,写32‘hFFFFFFFF;
10. 退出复位,地址0x0000写入0x00000000;
TX配置:
1. 地址0x0100写入TX报文的ID、扩展帧标识;
2. 地址0x0104写入TX报文的字节长度、CANFD标识;
3. 地址0x0108、0x010C写入TX报文的字节0-7;
4. 地址0x0090写入0x1,标识TX Buffer ready;
RX配置:
1. 读取地址0x00E8,获取RX Buffer的状态,包括buffer的下标、buffer中的报文个数;
2. 如果RX Buffer中有报文,按照下标index读取数据:
3. 读取地址0x2100+index*0x48,获取RX报文ID;
4. 读取地址0x2104+index*0x48,获取RX报文字节长度;
5. 读取地址0x2108+index*0x48、0x210C+index*0x48,获取RX报文数据0-7字节;文章来源:https://www.toymoban.com/news/detail-716781.html
6. 对地址0x00E8地址写0x80,设置IRI为1,标识本次读取完成,将buffer下标指示到下一个buffer;文章来源地址https://www.toymoban.com/news/detail-716781.html
到了这里,关于Vivado CANFD IP 使用笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!