1回答

0收藏

[评测分享] 【树莓派5 测评】 + 17.I2C测试-LM75A(zmj)

#板卡评测 #板卡评测 3303 人阅读 | 1 人回复 | 2024-04-30

【树莓派5 测评】 + 17.I2C测试-LM75A(zmj)


树莓派的GPIO接口功能十分丰富,支持I2C/UART/SPI等接口。此处测试I2C接口,测试目标为温度芯片LM75A。

  1. //------树莓派手册
  2. https://www.raspberrypi.com/documentation/computers/raspberry-pi.html
  3. //------LM75A连接I2C1
  4. 3V3 power        ------  VCC
  5. GPIO 2(SDA)        ------  SDA数据
  6. GPIO 3(SCL) ------  SCL时钟
  7. Ground      ------  GND
复制代码
//------GPIO(40-Pin)状态


1.        I2C简介  
1.1        I2C总线简介
I2C总线(Inter IC bus)是由Philips公司开发的一种通用数据总线。
两根通信线:SCL(Serial Clock串行时钟线)、SDA(Seriak Data串行数据线)。
工作模式为同步、半双工,带数据应答。
同步(因为它有单独的时钟线)、半双工(SDA只有一根线,并且还要来回通信)通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度。
1.2        I2C工具
i2c-tools工具用来测试I2C总线十分便捷。
  1. //------安装I2C工具
  2. sudo apt-get install -y python-smbus
  3. sudo apt-get install -y i2c-tools
复制代码
1.2        I2C总线检测
通过“i2cdetect -l”可以扫描I2C总线,然后依次读取每个I2C总线设备列表,完成I2C总线检测。
//------检测脚本:check_i2c.sh
  1. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ cat check_i2c.sh
  2. #!/bin/bash

  3. echo "//------************************************************"
  4. # ------
  5. echo "//------There are 4 i2c devices"
  6. echo "//---cmd: ls /dev/i2c/*"
  7. echo "//---result:"
  8. ls /dev/ | grep "i2c"
  9. #       i2c-1
  10. #       i2c-11
  11. #       i2c-12
  12. ls /dev/i2c*
  13. # ------
  14. echo "//------You'll detect 2 i2c adapter"
  15. echo "//---cmd: i2cdetect -l"
  16. echo "//---result:"
  17. i2cdetect -l
  18. #       i2c-1    i2c             Renesas RIIC adapter                    I2C adapter
  19. #       i2c-11   i2c             Renesas RIIC adapter                    I2C adapter
  20. #       i2c-12   i2c             Renesas RIIC adapter                    I2C adapter
  21. # ------
  22. echo "//------Now Test spidev2.0...."
  23. echo "//---cmd: i2cdetect -r -y 1/11/12"
  24. echo "//---result:"
  25. echo "//--- i2c-1"
  26. i2cdetect -r -y 1
  27. echo "//--- i2c-11"
  28. i2cdetect -r -y 11
  29. echo "//--- i2c-12"
  30. i2cdetect -r -y 12
  31. echo "//------************************************************"

  32. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ source ./check_i2c.sh
  33. //------************************************************
  34. //------There are 4 i2c devices
  35. //---cmd: ls /dev/i2c/*
  36. //---result:
  37. i2c-1
  38. i2c-11
  39. i2c-12
  40. /dev/i2c-1  /dev/i2c-11  /dev/i2c-12
  41. //------You'll detect 2 i2c adapter
  42. //---cmd: i2cdetect -l
  43. //---result:
  44. i2c-1   i2c             Synopsys DesignWare I2C adapter         I2C adapter
  45. i2c-11  i2c             107d508200.i2c                          I2C adapter
  46. i2c-12  i2c             107d508280.i2c                          I2C adapter
  47. //------Now Test spidev2.0....
  48. //---cmd: i2cdetect -r -y 1/11/12
  49. //---result:
  50. //--- i2c-1
  51.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  52. 00:                         -- -- -- -- -- -- -- --
  53. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  54. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  55. 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  56. 40: -- -- -- -- -- -- -- -- 48 -- -- -- -- -- -- --
  57. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  58. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  59. 70: -- -- -- -- -- -- -- --
  60. //--- i2c-11
  61.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  62. 00:                         -- -- -- -- -- -- -- --
  63. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  64. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  65. 30: -- -- -- -- -- -- -- -- -- -- 3a -- -- -- -- --
  66. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  67. 50: 50 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  68. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  69. 70: -- -- -- -- -- -- -- --
  70. //--- i2c-12
  71.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
  72. 00:                         -- -- -- -- -- -- -- --
  73. 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  74. 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  75. 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  76. 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  77. 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  78. 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
  79. 70: -- -- -- -- -- -- -- --
  80. //------************************************************
  81. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$
复制代码
2.        I2C读取温度传感器LM75
2.1         LM75简介
LM75A/LM75B是一个高速I2C接口的温度传感器,可以在-55℃~+125℃的温度范围内将温度直接转换为数字信号,并可实现0.125℃的精度。MCU可以通过I2C总线直接读取其内部寄存器中是数据。LM75有三个可选的逻辑地址引脚,使得同一总线上课同时连接8个器件而不发生地址冲突。  
  1. //------LM75
  2. a.接口:I2C
  3. b.器件地址:7bit从机地址,1001xxx
  4. c.默认地址:0x48
复制代码
2.2        测试
I2C总线扫描设备节点使用i2cdetec指令,I2C总线设备读取使用的是i2cget指令,i2cdump可以批量获取I2C总线上的设备数值。
  1. a.扫描I2C总线/列出所有I2C设备节点:i2cdetect -l
  2. i2c-1   i2c             Synopsys DesignWare I2C adapter         I2C adapter
  3. i2c-11  i2c             107d508200.i2c                          I2C adapter
  4. i2c-12  i2c             107d508280.i2c                          I2C adapter
  5. b.扫描I2C-1总线设备:i2cdetect -y 1
  6. c.读取I2C-1总线的0x48设备:i2cget -f -y 0x1 0x48
  7. |---0x1a(换算成十进制是26摄氏度)
  8. d.将数值读取与格式转换通过shell脚本完成lm75.sh,代码如下:
  9. #!/bin/sh
  10. # ------
  11. getTEMP()
  12. {
  13. i2cget -f -y 0x1 0x48 0x00
  14. } #
  15. ------
  16. temp='getTEMP' ;
  17. Value=$($temp) ;
  18. Result=$(printf "%d" "$Value") ;
  19. # ------
  20. echo "//------------------------------------------------"
  21. date
  22. echo ""
  23. echo "Temperature read from LM75 @ i2c-1_0x48 : $Result ."
  24. echo ""
  25. read -n1 -p "Press any key to exit!"
  26. echo ""
  27. # ------
  28. e.使用i2cdump工具获取i2c-3总线的LM75(0x48)所有寄存器值,即多次温度值。
  29. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ cat lm75.sh
  30. #!/bin/sh

  31. # ------
  32. getTEMP()
  33. {
  34. i2cget -f -y 0x1 0x48 0x00
  35. }

  36. # ------
  37. temp='getTEMP' ;
  38. Value=$($temp) ;
  39. Result=$(printf "%d" "$Value") ;

  40. # ------
  41. echo "//------------------------------------------------"
  42. date
  43. echo ""
  44. echo "Temperature read from LM75 @ i2c-1_0x48 : $Result ."
  45. echo ""
  46. read -n1 -p "Press any key to exit!"
  47. echo ""

  48. # ------
  49. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ source ./lm75.sh
  50. //------------------------------------------------
  51. Tue 30 Apr 01:23:34 CST 2024

  52. Temperature read from LM75 @ i2c-1_0x48 : 22 .

  53. Press any key to exit!
  54. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$ i2cdump -f -y 1 0x48
  55. No size specified (using byte-data access)
  56.      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
  57. 00: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  58. 10: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  59. 20: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  60. 30: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  61. 40: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  62. 50: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  63. 60: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  64. 70: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  65. 80: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  66. 90: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  67. a0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  68. b0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  69. c0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  70. d0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  71. e0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  72. f0: 16 00 4b 50 ff ff ff ff 16 00 4b 50 ff ff ff ff    ?.KP....?.KP....
  73. zhaomeijing@raspberrypi5:~/workspace/18_gpio/i2c$
复制代码
//------SHELL脚本测试结果:
//------end


关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 1 个

倒序浏览

沙发

赵美京?????

发表于 2024-4-30 17:28:53 | 只看该作者

补充一张LM75A连接图:



回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条