在QCS8550的UEFI中, 如何进行I2C的通信?

七七八八的中 2024-11-15 09:55:22

在QCS8550的UEFI中, 如何进行I2C的通信?

...全文
845 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38498942 2024-11-21
  • 打赏
  • 举报
回复
  1. 定义 ENABLE_I2C_06. 如果已经有,则跳过这⼀步
    BP?CODE/TZ.XF.5.24/trustzone_images/core/settings/buses/i2c/qupv3/config/kailua/tz/i2c_devcfg.
#include "i2c_config.h"
#define ENABLE_I2C_04
#define ENABLE_I2C_06 // add this declare

  1. 在TZ ⼊⼝中添加下⾯的配置. 如果已经有,则跳过这⼀步
BP?CODE/TZ.XF.5.24/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/kailu
a/QUPAC_Access.c
const QUPv3_se_security_permissions_type qupv3_perms_default[] =
{
...
{ QUPV3_1_SE6, QUPV3_PROTOCOL_I2C, QUPV3_MODE_FIFO, AC_HLOS, TRUE,
TRUE, FALSE },
...
};

  1. 在UEFI中使能 I2C protocol. 如果已经有,则跳过这⼀步
BP-CODE/BOOT.MXF.2.1.1/boot_images/boot/QcomPkg/SocPkg/Kailua/Common/Core.fdf
...
INF QcomPkg/Drivers/I2CDxe/I2CDxe.inf
...

  1. 在你需要使⽤I2C的代码的 .inf ⽂件中添加引⽤I2CApiLib.如果已经有,
    则跳过这⼀步
[LibraryClasses]
I2CApiLib
[Protocols]
gQcomI2CProtocolGuid

5.I2C读写使⽤⽅法

  1. 可以参考 BP?CODE/BOOT.MXF.2.1.1/boot_images/boot/QcomPkg/QcomTestPkg/I2CApp/I2Ceeprom.c 使⽤
    i2c api.
  2. 在你的代码中按如下顺序依次调⽤i2c api
i2c_open -> i2c_read/i2c_write -> i2c_close
#include "i2c_api.h"

6.关于 i2c_instance 如何使⽤
⾼通基线代码对i2c分组定义是从0开始的,如 BP?CODE/TZ.XF.5.24/trustzone_images/core/settings/buses/i2c/qupv3/config/kailua/tz/i2c_devcfg.

#ifdef ENABLE_I2C_00
static i2c_plat_gpio_properties tz_i2c_00_sda = {"qup1_se0_l0", {
TLMM_GPIO_INPUT, TLMM_GPIO_PULL_UP, TLMM_GPIO_2MA }, 00 };
static i2c_plat_gpio_properties tz_i2c_00_scl = {"qup1_se0_l1", {
TLMM_GPIO_INPUT, TLMM_GPIO_PULL_UP, TLMM_GPIO_2MA }, 00 };
#endif
但 i2c_instance 枚举是从1开始的,如 BP?CODE/BOOT.MXF.2.1.1/boot_images/boot/QcomPkg/Include/Protocol/prot_inc/i2c_common.h
typedef enum
{
I2C_INSTANCE_001 = 1, /**< Instance 01. */
I2C_INSTANCE_002, /**< Instance 02. */
I2C_INSTANCE_003, /**< Instance 03. */
I2C_INSTANCE_004, /**< Instance 04. */
I2C_INSTANCE_005, /**< Instance 05. */
I2C_INSTANCE_006, /**< Instance 06. */
I2C_INSTANCE_007, /**< Instance 07. */
I2C_INSTANCE_008, /**< Instance 08. */
I2C_INSTANCE_009, /**< Instance 09. */
I2C_INSTANCE_010, /**< Instance 10. */
I2C_INSTANCE_011, /**< Instance 11. */
I2C_INSTANCE_012, /**< Instance 12. */
I2C_INSTANCE_013, /**< Instance 13. */
I2C_INSTANCE_014, /**< Instance 14. */
I2C_INSTANCE_015, /**< Instance 15. */
I2C_INSTANCE_016, /**< Instance 16. */
I2C_INSTANCE_017, /**< Instance 17. */
I2C_INSTANCE_018, /**< Instance 18. */
I2C_INSTANCE_019, /**< Instance 19. */
I2C_INSTANCE_020, /**< Instance 20. */
I2C_INSTANCE_021, /**< Instance 21. */
I2C_INSTANCE_022, /**< Instance 22. */
I2C_INSTANCE_023, /**< Instance 23. */
I2C_INSTANCE_024, /**< Instance 24. */
I2C_INSTANCE_025, /**< Instance 25. */
I2C_INSTANCE_026, /**< Instance 26. */
I2C_INSTANCE_MAX, /**< Instance Max. */
} i2c_instance;

所以,使⽤i2c_open,第⼀个参数是 I2C_INSTANCE_007

3,468

社区成员

发帖
与我相关
我的任务
社区描述
本论坛以AI、WoS 、XR、IoT、Auto、生成式AI等核心板块组成,为开发者提供便捷及高效的学习和交流平台。 高通开发者专区主页:https://qualcomm.csdn.net/
人工智能物联网机器学习 技术论坛(原bbs) 北京·东城区
社区管理员
  • csdnsqst0050
  • chipseeker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧