目录一、SPI简介1、概念2、入门案例2.1定义接口2.2两个实现类2.3配置文件2.4测试代码二、原理分析1、ServiceLoader结构2、iterator迭代方法3、hasNextService方法4、nextService方法三、SPI实践1、Driver驱动接口2、Slf4j日志接口四、参考源码基于【JDK1.8】一、SPI简介1、概念SPI即service-provider-interface的简写;JDK内置的服务提供加载机制,可以为服务接口加载实现类,解耦是其核心思想,也是很多框架和组件的常用手段;2、入门案例2.1定义接口就是普通的接口,在SPI的机制中称为【service
引言低速通信目前搞过UART串口通信、IIC通信。其实SPI也算是中低速(有时也可以用作高速通信)串行通信的范畴,但是一直还没真正实现过,所以此系列就SPI的协议以及FPGA设计作几篇博客记录。欢迎订阅关注~SPI标准协议x1模式SPI是一种事实标准,由Motorola开发,支持全双工通信,并没有一个官方标准。已知的有的器件SPI已达到50Mbps,如果时序满足,FPGA的SPI通信速率可以达到100Mbps以上。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。设备通信框图SPI通信主设备:SCLK:SPI通信时钟,源:SPI主设备。MOSI:SPI主设备控制器数据发送,源:SP
引言低速通信目前搞过UART串口通信、IIC通信。其实SPI也算是中低速(有时也可以用作高速通信)串行通信的范畴,但是一直还没真正实现过,所以此系列就SPI的协议以及FPGA设计作几篇博客记录。欢迎订阅关注~SPI标准协议x1模式SPI是一种事实标准,由Motorola开发,支持全双工通信,并没有一个官方标准。已知的有的器件SPI已达到50Mbps,如果时序满足,FPGA的SPI通信速率可以达到100Mbps以上。具体到产品中SPI的速率主要看主从器件SPI控制器的性能限制。设备通信框图SPI通信主设备:SCLK:SPI通信时钟,源:SPI主设备。MOSI:SPI主设备控制器数据发送,源:SP
ESP32-SPI接口bl0942驱动1.bl0942电路设计2.bl0942spi驱动时序3.esp32spi接口简介4.esp32驱动bl0942测试结果4.1读寄存器4.2写寄存器5.esp32驱动bl0942代码解析5.1初始化5.2添加设备BL0942功耗模块在物联网设备中的应用比较广泛,本博文完成ESP32基于SPI接口驱动功耗BL0942模块(上海贝岭公司)的寄存器的读写,从而可以完成寄存器模式的配置,以及读取寄存器的值完成电流电压,功率等值的计算。1.bl0942电路设计2.bl0942spi驱动时序在通信模式下,先发送8bit识别字节(0x58)或(0xA8),(0x58)是
AD7616采集电压电流,采用SPI模式通讯问题描述AD7616支持并口及SPI串行通讯,使用单片机采用单线SPI读数据时一直无法正确运行。原因分析:1.排查硬件设计,包括模式选择,复位逻辑等,没有问题。2.用FPGA与AD7616通讯正常,排除7616自身单线模式无法工作的原因。3.更换时序逻辑完全一致的其他芯片,如AD8686,一切正常。解决方案:使用逻辑分析仪抓取MCU与AD7616的通讯时序,最终确定是在SPI读取时候SDO引脚上的数据只能是0x00,其他任何数据都会造成异常,可见是AD7616自身存在的问题。下图是配置测试通道后抓取的正确时序 以下都是错误时序
目录一、并行和串行二、异步和同步三、全双工和半双工四、UART协议1.UART简介2.UART接口3.UART帧格式五、I2C协议1.I2C物理层特点2.字节格式3.7-bit寻址数据传输4.SCL同步和SDA仲裁六、SPI协议1.SPI简介2.SPI数据通信的流程3.SPI时钟特点4.SPI四种MODE5.SPI优缺点七、CAN协议1.CAN简介2.CAN的闭环通信网络3.CAN的开环通信网络4.CAN总线5.CAN的位同步6.CAN的帧种类和用途八、RS485,RS422,RS232的接口协议1.RS485简介2.RS232简介2.RS422简介4.RS485,RS422,RS232的接口
STM32模拟SPI协议控制数字电位器MCP41010电阻值MCP41010是单路8位分辨率数字电位器,通过SPI接口可控制电位器阻值分配,相当于PW0端在PA0和PB0之间滑动。如下图所示:MCP41010是10K欧姆规格的数字电位器,即PA0和PB0之间的阻值恒定为10K,PW0与PA0或PW0与PB0之间的阻值互补可配。另外有相关型号不同阻值规格和集成双路的MCP系列数字电位器,其控制原理相同:这里介绍STM32模拟SPI协议控制数字电位器MCP41010的代码范例。采用STM32CUBEIDE开发平台,以STM32F401RCT6为例。STM32工程配置首先建立基本工程并设置时钟:采用
【STM32CubeIDE】STM32F103硬件SPI驱动1.8寸TFTLCD128X160ST7735S✨虽然STM32CubeIDE也是基于HAL库,但是还是不能直接转KeilMDK工程,本驱动案例从GitHub下载来的,原始工程使用的是较老版本的STM32CubeIDE配置的,没法在继续在新版本上程序配置,工程只是做了初始化配置。程序并不能直接被点亮,重新配置了lcd初始化函数以及复位函数后,才点被亮屏幕,同时调整好了屏幕显示像素便宜的问题。点亮屏幕是关键,后续可以很方便移植到KeilMDK环境下开发使用。📌Github原工程地址:https://github.com/cat-bear
在项目中使用了xilinx的7系FPGA芯片xc7k325t-2ffg900,配置模式采用主串方式,开发环境采用ise14.7,故在原理设计阶段,spiflash芯片选用了华邦电子华邦电子的W25Q128FVSIG。在产品装配阶段,华邦电子的W25Q128FVSIG芯片渠道受限,进行原位替换,经过阅读比较同容量spiflash的器件手册,最终确定了两款国产spiflash用于原位替换。利用复旦微电子的FM25Q128A作为flash,生成bit时,选择数据位宽1,下载flash时,选择N25Q128;利用博雅科技的BY25Q128ASSIG作为flash,生成bit时,选择数据位宽1,下载fl
目录OLED介绍取字模程序main.coled.coled.hspi2.cspi2.holedfont.h效果源码模拟SPI控制方式OLED介绍OLED主要参数1、高分辨率:12864(和12864LCD相同分辨率,但该OLED屏的单位面积像素点多)。2、广可视角度:大于160°。3、低功耗:正常显示时0.04W。4、宽供电范围:直流3.3V-5V。5、工业级:工作温度范围-30°℃~70°℃。6、体积小:28.8mm28.5mm。7、通信方式:lIC、SPI。8、亮度、对比度可以通过程序指令控制。9、OLED屏幕内部驱动芯片:SSD1306。6针OLED如下图所示引脚定义分别为引脚定义GND