OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7800|回复: 5

linux驱动中的spi和i2c的认识和疑问

[复制链接]

3

主题

8

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2020-10-27
在线时间
9 小时
发表于 2020-11-10 11:42:50 | 显示全部楼层 |阅读模式
1金钱
基于原子哥的教程,完成了i2c、spi。
有以下认识和疑问:
认识:
1、i2c和spi都有专用的格式,两者很像,都仅需完成其中的设备驱动即可;
2、两者的platform_driver均由内核完成,需要完成的部分,在格式上和platform一样
3、spi基于设备树操作时,设备树的配置项中(见加粗部分),cs-gpios由内核直接识别,不需要在驱动中再去识别;原子哥的教程把这个改成了cs-gpio,内核识别不了,所以需要在驱动中去识别(这一点是否正确,请大神指教
    pinctrl-names = "default";
    pinctrl-0 = <&pinctrl_ecspi3>;
    cs-gpios = <&gpio1 20 GPIO_ACTIVE_LOW>;//此处加粗
    status = "okay";



疑问:
i2c在匹配设备树时,必须采用如下格式,注意加粗部分,其中的id_table必须存在,否则匹配不到设备树
[code]static

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

8

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2020-10-27
在线时间
9 小时
 楼主| 发表于 2020-11-10 16:13:12 | 显示全部楼层
内容不完整,补充一下:
i2c在匹配设备树时,必须采用如下格式,其中的id_table必须存在,否则匹配不到设备树
spi在匹配设备树时,id_table则不需要一定有
id_table是传统的匹配模式,of_match_table是和设备树匹配用的,我不明白的地方是:为什么i2c必须要加上id_table??

i2c函数:
  1. static        struct        i2c_driver OLED_drv = {
  2.         .probe = OLED_drv_probe,
  3.         .remove = OLED_drv_remove,
  4.         .driver = {
  5.                 .owner = THIS_MODULE,
  6.                 .name = "OLED",
  7.                 .of_match_table = OLED_of_match,
  8.         },
  9.         [b].id_table = OLED_id,[/b]

  10. };
复制代码

spi函数:
  1. static        struct        spi_driver        spitest_drv = {
  2.         .probe = spi_test_probe,
  3.         .remove = spi_test_remove,
  4.         .driver = {
  5.                 .owner = THIS_MODULE,
  6.                 .name = "icm20608",
  7.                 .of_match_table = spi_test_match,
  8.         },
  9.         //.id_table = spi_test_id,
  10. };
复制代码
回复

使用道具 举报

0

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2552
金钱
2552
注册时间
2019-12-5
在线时间
352 小时
发表于 2020-11-11 08:49:57 | 显示全部楼层
点赞!!!!
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-8-10
在线时间
4 小时
发表于 2021-2-15 14:44:52 | 显示全部楼层
我用左总的Demo例程,还是获取不到数据,找了半天,无果,请教有正确的Demo么
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-8-10
在线时间
4 小时
发表于 2021-2-16 10:33:26 | 显示全部楼层
emmmmm,原来SPI的引脚和UART2引脚冲突,解决了
回复

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
482
金钱
482
注册时间
2021-1-16
在线时间
52 小时
发表于 2021-3-29 18:47:39 | 显示全部楼层
刘先生11 发表于 2020-11-10 16:13
内容不完整,补充一下:
i2c在匹配设备树时,必须采用如下格式,其中的id_table必须存在,否则匹配不到设 ...

检查下设备树里i2c节点OLED设备的OLED_of_match是不是一样的,i2c总线的匹配顺序是先查of_match_table
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 21:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表