驱动 - 数码管显示数值

SPI总线

SPI 是串行外设接口(Serial Peripheral Interface)的缩写。 是 Motorola 公司推出的一种同步串行接口技术,是一种 高速的,全双工,同步的通信总线。 SPI优点 支持全双工通信 通信简单 数据传输速率快

1):高速、同步、全双工、非差分、总线式

2):主从机通信模式 缺点 没有指定的流控制,没有应答机制确认是否接收到数据, 所以跟IIC总线协议比较在数据的可靠性上有一定的缺陷。

 SPI时序解析

CPOL=0,CPHA=0:此时空闲态时,SCLK处于低电平,数据采样是在第1个边沿,

也就是 SCLK由低电平到高电平的跳变,所以数据采样是在上升沿,数据发送

是在下降沿。

CPOL=0,CPHA=1:此时空闲态时,SCLK处于低电平,数据发送是在第1个边沿,

也就是 SCLK由低电平到高电平的跳变,所以数据采样是在下降沿,数据发送

是在上升沿。

CPOL=1,CPHA=0:此时空闲态时,SCLK处于高电平,数据采集是在第1个边沿,

也就是 SCLK由高电平到低电平的跳变,所以数据采集是在下降沿,数据发送

是在上升沿。

CPOL=1,CPHA=1:此时空闲态时,SCLK处于高电平,数据发送是在第1个边沿,

也就是 SCLK由高电平到低电平的跳变,所以数据采集是在上升沿,数据发送

是在下降沿。

 数码管显示数值实例

#include <linux/init.h>
#include <linux/module.h>
#include<linux/spi/spi.h>

int m74hc595_probe(struct spi_device *spi)
{
    char buf[]={0x2,0x6d};
    printk("%s:%d\n",__FILE__,__LINE__);
    spi_write(spi,buf,sizeof(buf));
    return 0;
}
int m74hc595_remove(struct spi_device *spi)
{
     printk("%s:%d\n",__FILE__,__LINE__);
     return 0;
}

//设备树匹配表
struct of_device_id of_table[]={
    {.compatible="hqyj,m74hc595"},
    {},
};
MODULE_DEVICE_TABLE(of,of_table);
//定义SPI对象并且初始化
struct spi_driver m74hc595 ={ 
    .probe=m74hc595_probe,
    .remove=m74hc595_remove,
    .driver={
        .name="m74hc595",
        .of_match_table=of_table,
    },
};

module_spi_driver(m74hc595); 
MODULE_LICENSE("GPL"); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding Peasant

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值