草庐IT

AXI协议中的4K边界问题

AXI中一次突发不能越过4K边界!4k边界是指低12bit全为0的地址,如32’h00001000,32’h00002000,32’h00001000等这些特殊的地址均为4k边界。4k边界对齐的最大原因是系统中定义一个page大小为4kBytes,为了更好设定每个slave的访问attribute,就给一个slave划分4k空间。AXI协议中一次突发不能越过4K边界是为了避免一笔burst交易访问两个slave(每个slave都是4k对齐),如果一次burst传输访问大于4k,则可能会造成地址从slave1增加了slave2上,slave2又不响应,导致传输无法完成。以32位地址为例,[31:

AXI DMA IP核使用说明

文章目录1AXIDMAIP核结构图2AXIDMAIP接口1寄存器说明1MM2S寄存器2S2MM寄存器2S/G描述符3DMA多通道模式3AXIDMAIP核使用说明1时钟2复位3使用说明1直接DMA使用顺序2S/G模式3循环DMA模式4AXIDMAIP核使用配置AXIDMA提供内存和AXI4-Stream目标外设之间的高带宽直接内存访问。DMA除了配置为直接DMA模式外,还可以配置为scatter/gather(S/G)模式,S/G模式减轻CPU负担。为了掌握对DMA的使用方法,需要对DMAIP核有足够的了解。这篇文章主要对AXIDMAIP核的使用进行简单的说明,接下来详细论述,首先是AXIDMA

SPI协议详解

SPI协议简介SPI是一种高速的、全双工、同步的串行通信总线,SPI采用主从方式工作,一般有一个主设备和一个或者多个从设备。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI至少需要4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选信号),SPI使用引脚较少且布线方便,所以芯片SOC中基本都需要SPI总线。寻址方式当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。有两种方法可以将多个从设备连

SPI协议详解

SPI协议简介SPI是一种高速的、全双工、同步的串行通信总线,SPI采用主从方式工作,一般有一个主设备和一个或者多个从设备。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI至少需要4根线,分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选信号),SPI使用引脚较少且布线方便,所以芯片SOC中基本都需要SPI总线。寻址方式当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备。有两种方法可以将多个从设备连

【AXI】解读AXI协议乱序机制

芯片设计验证社区·芯片爱好者聚集地·硬件相关讨论社区·数字verifier星球四社区联合力荐!近500篇数字IC精品文章收录!【数字IC精品文章收录】学习路线·基础知识·总线·脚本语言·芯片求职·EDA工具·低功耗设计Verilog·STA·设计·验证·FPGA·架构·AMBA·书籍解读AXI协议乱序机制一、写在前面二、解读AXI协议的乱序机制2.1核心思想2.2信号列表2.2.1AXI3信号列表2.2.2AXI4信号列表2.2.3总结2.3传输顺序2.3.1读顺序2.3.2写顺序2.3.3读写操作的合作2.4互连线中ID信号的扩展2.5ID信号的位宽2.6总结三、其他数字IC基础协议解读3.

U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

U8g2库的STM32硬件SPI(DMA)移植教程U8g2库的STM32硬件SPI移植教程(HAL、OLED显示、四线SPI)前言U8g2简介U8g2是什么U8g2支持的显示控制器U8g2的优势CubexMX的配置RCC配置外部高速晶振(精度更高)——HSE:SYS配置:Debug设置成SerialWire(否则可能导致芯片自锁):时钟树配置:SPI1配置半双工(全双工):作为OLED的通讯方式:(注意这里的配置)DMA配置:工程配置:U8g2移植准备U8g2库文件精简U8g2库文件去掉csrc文件夹中无用的驱动文件精简u8g2_d_setup.c(注意不是u8x8_setup.c)精简u8g

linux下spi调试小工具spidev_test、spi-tools

一、spidev_testhttps://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/plain/tools/spi/spidev_test--helpspidev_test:unrecognizedoption`--help'Usage:spidev_test[-DsbdlHOLC3]-D--devicedevicetouse(default/dev/spidev1.1)-s--speedmaxspeed(Hz)-d--delaydelay(usec)-b--bpwbitsperword-i--inputinputda

鸿蒙开发板hi3861硬件SPI通信arduinoUNO

鸿蒙开发板hi3861硬件SPI通信arduinoUNO.rar-硬件开发文档类资源-CSDN下载解压密码:https://blog.csdn.net/txwtech更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/47641746鸿蒙开发板hi3861硬件SPI通信arduinoUNO实例源代码 //hispark底板switch2,SPI0_CS1---ArduinoSS引脚10 //hispark底板GPIO006_JTAG_MODE---ArduinoSCK引脚13 //hispark底板switch1-

python - Golang 和 SPI - 尝试初始化 RF522 驱动器

我有一个简单的Python代码可以初始化MFRC522设备正确:importspidevmode_reset=0x0Fdefspi_transfer(data):r=spi.xfer2(data)returnrdefdev_write(address,value):r=spi_transfer([(address>",[(address工作得很好——它返回命令代码15,但在Go中实现的相同初始化例程并不真正工作:packagemainimport("fmt""golang.org/x/exp/io/spi""log")funcmain(){spiDev,err:=spi.Open(&s

python - Golang 和 SPI - 尝试初始化 RF522 驱动器

我有一个简单的Python代码可以初始化MFRC522设备正确:importspidevmode_reset=0x0Fdefspi_transfer(data):r=spi.xfer2(data)returnrdefdev_write(address,value):r=spi_transfer([(address>",[(address工作得很好——它返回命令代码15,但在Go中实现的相同初始化例程并不真正工作:packagemainimport("fmt""golang.org/x/exp/io/spi""log")funcmain(){spiDev,err:=spi.Open(&s