spi

STM32L475 硬件SPI+软件SPI驱动ST7789V2

纵然是瞬间 提交于 2019-11-27 17:04:42
前言 最近购买了IoT Board 潘多拉开发板来研究,学习使用STM32CubeMX工具配置SPI,然后驱动了TFTLCD。潘多拉开发板的TFTLCD驱动IC是ST7789V2,结合原子哥的TFTLCD代码,分享自己的硬件SPI+软件SPI驱动ST7789V2+中文显示。关于STM32CubeMX的使用可以参考 微雪课堂STM32CubeMX系列教程 。 STM32L475 硬件SPI+软件SPI驱动ST7789V2代码: /* 如果使用软件SPI,只需把硬件SPI的宏开关去掉即可 */ //#define __LCD_HW_SPI_DRIVE__ #define __LCD_SW_SPI_DRIVE__ /* LCD_PWR:PB7 LCD_RST:PB6 LCD_WR: PB4 LCD_CS: PD7 */ #define LCD_PWR(n) (n ? HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOB, GPIO_PIN_7, GPIO_PIN_RESET)) #define LCD_RST(n) (n ? HAL_GPIO_WritePin(GPIOB, GPIO_PIN_6, GPIO_PIN_SET) : HAL_GPIO_WritePin(GPIOB, GPIO

SpringBoot应用篇之FactoryBean及代理实现SPI机制示例

给你一囗甜甜゛ 提交于 2019-11-27 13:42:00
更多Spring文章,欢迎点击 一灰灰Blog-Spring专题 FactoryBean在Spring中算是一个比较有意思的存在了,虽然在日常的业务开发中,基本上不怎么会用到,但在某些场景下,如果用得好,却可以实现很多有意思的东西 本篇博文主要介绍如何通过FactoryBean来实现一个类SPI机制的微型应用框架 文章内涉及到的知识点 SPI机制 FactoryBean JDK动态代理 I. 相关知识点 在看下面的内容之前,得知道一下什么是SPI,以及SPI的用处和JDK实现SPI的方式,对于这一块有兴趣了解的童鞋,可以看一下个人之前写的相关文章 SPI相关技术博文汇总---By一灰灰Blog 1. demo背景说明 在开始之前,有必要了解一下,我们准备做的这个东西,到底适用于什么样的场景。 在电商中,有一个比较恰当的例子,商品详情页的展示。拿淘宝系的详情页作为背景来说明(没有在阿里工作过,下面的东西纯粹是为了说明应用场景而展开) 假设有这么三个详情页,我们设定一个大前提,底层的数据层提供方都是一套的,商品详情展示的服务完全可以做到复用,即三个性情页中,绝大多数的东西都一样,只是不同的详情页车重点不同而已。 如上图中,我们假定有细微区别的几个地方 位置 淘宝详情 天猫详情 咸鱼详情 说明 banner 显示淘宝的背景墙 显示天猫的广告位 咸鱼的坑位 三者数据结构完全一致

Dubbo源码学习之-SPI介绍

跟風遠走 提交于 2019-11-27 11:10:58
前言 学习之路还是要戒骄戒躁,一以贯之的积累前行。之前的公司部门技术达人少,自己总向往那些技术牛人多的团队,想象自己进去之后能跟别人学到多少东西。如今进到一个这样的团队之后,却发现之前自己的想法过于幼稚。且不说由于人与人之间性格不合导致的难以深入相处,即使相处融洽,别人也不会给你太多的帮扶,更多的还是靠自己去学习去探究。学习的道路上没有什么捷径,且会有很多的心魔需要自己去克服。闲话少叙,今天主要是说一下Dubbo中SPI的基本内容,自适应拓展的部分后面单独成文。 什么是SPI 要说Dubbo的SPI,则必须先说说Java原生的SPI。可能很多道友都没有听说过SPI,它是Service Provider Interface 即服务提供接口的简称,顾名思义,它就是用来提供服务的。 在Java中是如何提供服务的呢?简要来说,就是在资源文件目录下(即resource目录下)的META-INF/services文件夹下,建立文件名为接口的全路径名的文件,文件内容为此接口的实现类全路径名。然后在代码中通过ServiceLoader类获取这些配置的实现类,然后就可以自由的使用这么实现类了。下面是我在本地写的一个小Demo: 代码结构如下所示: 接口代码: 1 package spipackage; 2 public interface SpiInterface { 3 void getName(

SPI通讯(Serial Peripheral interface)

你。 提交于 2019-11-27 00:53:23
1. SPI,是一种高速的,全双工, 同步的通信总线,并且在芯片的管脚上只占用四根线: SCLK,MISO,MOSI,CS 2. SPI结构简图:              可以看出,SPI主从设备两端都有一个位移寄存器, 数据在位移寄存器上通过逐位移动来实现同步双工通信,在主机发送数据的同时也会收到从机发来的数据。类似一个循环。 (图片不好编辑,将就着看), 需要注意的是传输过程是通过主机写入一个需要发送的数据来开始的。   如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。发送结束可以设置中断。 3. 时钟极性(POL)和相位(PHA), 通过配置极性及相位为0或1,可配置成为4种不同的传输时序:极性为0,时钟空闲为低电平,反之为高;相位为0,据在第一个时钟跳变沿被采集,为1的话在第二个跳变沿被采集。如图:                                      4. SPI 时钟最多可以到 18Mhz,支持 DMA,可以配置为 SPI 协议或者 I2S (一种音频传输总线,集成电路内置音频总线)。 5. NSS引脚: 主从模式选择,简单了解,用到时再具体了解。 7. 数据帧格式: 可软件设置MSB或LSB哪个在先(SPI_CR1寄存器中LSBFIRST位)

STM32 SPI Slow Compute

风格不统一 提交于 2019-11-26 21:41:09
问题 I'm using a STM32F4 and its SPI to talk to a 74HC595 like in this tutorial. Difference is for starters I'm using the non-DMA version for simplicity. I used STMCubeMX to configure SPI and GPIO Issue is: I'm not getting the latch PIN, that I set to PA8 to toggle during transmission fast enough. The code I'm using: spiTxBuf[0] = 0b00000010; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, GPIO_PIN_RESET); HAL_SPI_Transmit(&hspi1, spiTxBuf, 1, HAL_MAX_DELAY); // while(HAL_SPI_GetState(&hspi1) != HAL_SPI

WIZnet-io6Library下载及使用

南笙酒味 提交于 2019-11-26 16:58:43
概观 io6Library是一个IPv6集成库,可以轻松集成和管理使用WIZnet硬连线双TCP / IP堆栈控制器(WIZCHIP)产品系列的用户应用程序。 io6Library用于管理依赖于用户特定MCU的代码,因此用户无需根据用户MCU执行io6Library的移植操作。(有关更多信息,请参见如何使用) 内容 io6Library 可分为以下三种类型。 Reigsters Defintion     通用寄存器:定义通用寄存器,如网络信息,模式,中断等。     套接字寄存器:定义SOCKET寄存器,如套接字模式,套接字通信,套接字中断等。 每个WIZCHIP I / O访问功能     基本I / O功能:通过WIZCHIP定义的HOST接口(SPI,BUS等)访问输入/输出的基本单元功能     公共寄存器访问功能:基于基本I / O功能访问公共寄存器的功能     SOCKET寄存器访问功能:基于基本I / O功能访问SOCKET寄存器的功能 WIZCHIP控制API,用于用户应用程序集成,管理和迁移     SOCKET API:与BSD SOCKET API一样,SOCKET API提供可以与socket socket commuuincation相关的函数集     额外的API:它提供支持用户应用程序集成的功能,无论WIZCHIP特定的Regiter /

SPI Nor FLASH

血红的双手。 提交于 2019-11-26 16:45:53
SPI Nor FLASH 参考内核 dervices/mtd/devices/m25p80.c M25P64 datasheet 由于M25P64属于SPI Nor Flash linux内核对于Flash采用Mtd驱动进行管理。 分析m25p80.c 省略了MTD Nor Flash Jedec与CFI 分析 这块分析可以参考韦东山老师Nor flash驱动的讲解 ,对于SPI falsh 驱动已经支持的很好了,只需要去添加以下设备注册 驱动硬件接口属于SPI设备驱动 static struct spi_driver m25p80_driver = { . driver = { . name = "m25p80" , . bus = & spi_bus_type , . owner = THIS_MODULE , } , . probe = m25p_probe , . remove = __devexit_p ( m25p_remove ) , } ; static int m25p80_init ( void ) { return spi_register_driver ( & m25p80_driver ) ; } static void m25p80_exit ( void ) { spi_unregister_driver ( & m25p80_driver ) ;

芯片翻译之ICM20602(二)

与世无争的帅哥 提交于 2019-11-26 00:13:08
5 可编程中断 ICM-20602有一个可编程中断系统,该系统可以在INT和DRDY引脚上产生中断信号。状态标志表示中断的来源。中断源可以单独启用和禁用。 中断名称 模块 运动检测 运动 FIFO溢出 FIFO FIFO Watermark FIFO 数据准备就绪 传感器寄存器 注: 有关中断启用/禁用寄存器和标志寄存器的信息,请参阅本文件第11节和第12节。下面解释一些中断源。 5.1 唤醒运动中断 ICM-20602提供运动检测功能。限定运动样本是从任何轴的高通过样本具有超过用户可编程阈值的绝对值的一个样本。以下步骤说明如何配置唤醒运动中断。 步骤1:确保加速计正在运行 在PWR_MGMT_1寄存器(0x6B)中,设置CYCLE = 0, SLEEP = 0, GYRO_STANDBY = 0 在PWR_MGMT_2寄存器(0x6C)中,设置SSTBY_XA = STBY_YA = STBY_ZA = 0, STBY_XG = STBY_YG = STBY_ZG = 1 步骤2:加速计配置 在ACCEL_CONFIG2寄存器(0x1D)中,设置ACCEL_FCHOICE_B = 1, A_DLPF_CFG[2:0] = 1 (b001) 步骤3:启用运动中断 在INT_ENABLE寄存器(0x38)中设置WOM_X_INT_EN = WOM_Y_INT_EN = WOM_Z

SPI、I2C和UART

我们两清 提交于 2019-11-25 21:34:54
一、SPI SPI(Serial Peripheral Interface,串行外设接口)是Motorola公司提出的一种同步串行数据传输标准,在很多器件中被广泛应用。 接口 SPI接口经常被称为4线串行总线,以主/从方式工作,数据传输过程由主机初始化。如图1所示,其使用的4条信号线分别为: 1) SCLK:串行时钟,用来同步数据传输,由主机输出; 2) MOSI:主机输出从机输入数据线,通常先传输MSB; 3) MISO:主机输入从机输出数据线,通常先传输LSB; 4) SS:片选线,低电平有效,由主机输出。 在SPI总线上,某一时刻可以出现多个从机,但只能存在一个主机,主机通过片选线来确定要通信的从机。这就要求从机的MISO口具有三态特性,使得该口线在器件未被选通时表现为高阻抗。 数据传输 在一个SPI时钟周期内,会完成如下操作: 1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据; 2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。 这是通过移位寄存器来实现的。如图2所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。 时钟极性和时钟相位 在SPI操作中