RK系列(RK3568) 收音机tef6686芯片驱动,i2c驱动

news2024/9/24 7:01:50

SOC:RK3568

模块:tef6686

系统:Android12

1.首先目前tef6686只有单片机才有驱动,Linux要集成只需要控制模块内部的i2c地址的顺序

  1. 从github下载tef6686 Andruino的代码 https://github.com/tehniq3/TEF6686

解压进入TEF6686-master\TEF6686_1602i2c_v6beta

这时候你可以发现TEF6686_1602i2c_v5.ino 和其他C++文件

.ino 里的 void setup() 和 void loop()

分别是Andruino 的执行函数和循环函数

由于我的tef6686挂载在i2c-5 设备树 记得打开

会产生节点/dev/i2c-5

&i2c5 {
        status = "okay";
        ...
        tef6686: tef6686@64 {
                status = "okay";
                compatible = "radio_tef6686";
                reg = <0x64>;
        };
        ...
};

由于保密关系,全部代码不好展示。

像里面的串口和LCD都得通通删掉,只保留tef6686相关的逻辑代码即可

我们主要修改点是Andruino I2C的实现方法,Linux下I2C应用控制主要如下

Tuner_Interface.cpp

unsigned char Tuner_WriteBuffer(unsigned char *buf, uint16_t len)
{
    uint16_t i;
    uint8_t r;
    if (fd < 0) {
        ALOGD("error fd < 0");
        return -1;
    }
    struct i2c_msg msgs[1] = {
        {I2C_ADDR, 0, len, buf},
    };
    struct i2c_rdwr_ioctl_data idata = {
        .msgs = msgs,
        .nmsgs = 1,
    };
    if (ioctl(fd, I2C_RDWR, &idata) < 0)
    {
        ALOGD(" ioctl I2C_RDWR error %d",fd);
        return -1;
    }
    usleep(1 * 1000);
    return 1;
}

unsigned char Tuner_ReadBuffer(unsigned char *addr,uint16_t addrLen,unsigned char *buf, uint16_t len)
{
    if (fd < 0) {
        ALOGD("chenjx fd < 0");
        return -1;
    }
    unsigned char reg = 0;
    uint16_t i =1;
    struct i2c_msg msgs[2] = {
        {I2C_ADDR, 0, addrLen, addr},
        {I2C_ADDR, I2C_M_RD, len, buf},
    };

    struct i2c_rdwr_ioctl_data idata = {
        .msgs = msgs,
        .nmsgs = 2,
    };
    
    if (ioctl(fd, I2C_RDWR, &idata) < 0)
    {
        ALOGD(" I2C_RDWR error");
        return -1;
    }
    return 1;
}

void Tuner_I2C_Init()
{
    //   Wire.begin();
    fd = open("/dev/i2c-5", O_RDWR);
    if (fd < 0){
        ALOGD("open %s false","/dev/i2c-5");
        return ;
    }
    ALOGD("open %s succuss","/dev/i2c-5");
}

tef6686目前常用的有9.216 M和12 M晶振,要确认自己板卡的晶振是多少,根据下图进行配置

例如我的是9.216 M

修改9, 0x40,0x04,0x01,0x00,0x8C,0xA0,0x00,0x00,0x00,//APPL_Set_ReferenceClock

晶振没配对,只能搜出杂音

上层应用程序或者APP打开i2c-5记得给权限chmod 777 i2c-5。

本片完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376659.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为OD机试用Python实现 -【任务混部】(2023-Q1 新题)

华为OD机试题 华为OD机试300题大纲任务混部题目输入输出示例一输入输出说明示例二输入输出说明备注Code代码编写思路华为OD机试300题大纲 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/ca…

Google Guice 5:AOP

1. AOP 1.1 实际开发中面临的问题 在实际开发中&#xff0c;经常需要打印一个方法的执行时间&#xff0c;以确定是否存在慢操作 最简单的方法&#xff0c;直接修改已有的方法&#xff0c;在finnally语句中打印耗时 Override public Optional<Table> getTable(String da…

中级嵌入式系统设计师2014下半年下午试题与答案解析

中级嵌入式系统设计师2014下半年下午试题与答案解析 试题一 阅读下列说明和图,回答下列问题。 [说明] ATM自动取款机系统是一个由终端机、ATM系统、数据库组成的应用系统,具有提取现金、查询账户余额、修改密码及转账等功能。ATM自动取款机系统用例图如图1所示。

win11开始菜单增强工具:StartAllBack

StartAllBack是一款Windows11开始菜单增强工具&#xff0c;在任务栏上为Windows 11恢复经典样式的Windows 7主题风格开始菜单&#xff0c;主要功能包括&#xff1a;恢复和改进开始菜单样式、个性化任务栏、资源管理器等功能。软件功能恢复和改进任务栏在任务图标上显示标签调整…

【Spring】通过JdbcTemplate实现CRUD操作

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 通过JdbcTemplate实现 增删查改一、添加相关依…

python-下载某短视频平台视频(高清无水印)

python-下载某短视频平台音视频&#xff08;高清无水印&#xff09;前言1、获取视频 url2、发送请求3、数据解析4、本地保存5、完整代码前言 1、Cookie中文名称为小型文本文件&#xff0c;指某些网站为了辨别用户身份而储存在用户本地终端&#xff08;Client Side&#xff09;…

RTMP的工作原理及优缺点

一.什么是RTMP&#xff1f;RTMP&#xff08;Real-Time Messaging Protocol&#xff0c;实时消息传输协议&#xff09;是一种用于低延迟、实时音视频和数据传输的双向互联网通信协议&#xff0c;由Macromedia&#xff08;后被Adobe收购&#xff09;开发。RTMP的工作原理是&#…

Windows 11 网卡MAC地址 | 机器地址 | 网络地址 为 0 | 00-00-00-00-00-00?手动修复……

一位同事反映&#xff0c;他的电脑今天上班开机无法上网&#xff0c;上周末还正常&#xff0c;请我帮忙检修。该同事的电脑安装的是Windows 11&#xff0c;检查网络连接的详细信息&#xff0c;发现IP地址、网关、DNS参数都正常&#xff0c;但物理地址为00-00-00-00-00-00。另外…

力扣每日一题(2023年2月)

2023年2月期每日一题第一天 &#xff08;2325. 解密消息&#xff09;第十六天&#xff08;2341. 数组能形成多少数对&#xff09;第十七天 &#xff08;1139. 最大的以 1 为边界的正方形&#xff09;第十八天 &#xff08;1237. 找出给定方程的正整数解&#xff09;第十九天 &a…

再度盈利,搜狐稳了?

2016年在宣布要用3年时间回归互联网舞台中心之后&#xff0c;很长一段时间内张朝阳积极活跃在各种社交媒体上&#xff0c;完全是一派“积极出山”的姿态。而后畅游从美股退市&#xff0c;搜狗“卖身”腾讯&#xff0c;一系列的收缩动作又似乎是在逐渐远离喧嚣。而在最近三年&am…

Zilliz @ GAIDC |Milvus:生产级 AI 数据库探索

2月26日&#xff0c;全球人工智能开发者先锋大会— AI 数据与开源论坛在上海举行&#xff0c;Zilliz 主任工程师刘力在现场发表了名为《Milvus&#xff1a;生产级 AI 数据库探索》的演讲。刘力开篇便提到&#xff0c;Milvus 致力于打造更为完善的 AI 生态体系。随后&#xff0c…

阿赵的MaxScript学习笔记分享五《UI组件使用篇》

大家好&#xff0c;我是阿赵。这个专题的内容比较多&#xff0c;所以抓紧时间更新。这是第五篇&#xff0c;UI组件使用篇。 这里主要是把maxscript的rollout窗体支持的UI组件列举一下&#xff0c;并每个组件写一个使用范例&#xff0c;以方便理解和查看。 1、位图bitmap 可以指…

Java中常用的七种队列你了解多少?

文章目录Java中常用的七种队列你了解多少?ArrayBlockingQueue队列如何使用&#xff1f;添加元素到队列获取队列中的元素遍历队列LinkedBlockingQueue队列如何使用&#xff1f;1. 创建SynchronousQueue对象2. 添加元素到队列3. 获取队列中的元素4. 遍历队列SynchronousQueue队列…

Unity Lighting -- Unity的光源简介

在主菜单栏中&#xff0c;点击Window -> Rendering -> Light Explorer打开光源管理器&#xff0c;这个标签页可以看到场景中所有的光源&#xff0c;包括每个光源的类型&#xff0c;形状&#xff0c;模式&#xff0c;颜色&#xff0c;强度&#xff0c;阴影等信息。 在主菜…

android unit test mock框架使用记录

写在前面 之前上班时&#xff0c;开发一个功能之后&#xff0c;还需要编写测试用例&#xff0c;使用的框架是mock。 为什么防止以后用到时忘了&#xff0c;在这里记录一下。 由于团队没有人使用Espresso进行unit test&#xff0c;所以本人对该框架并不熟悉。想了解该框架的使用…

WPF布局控件之DockPanel

DockPanel DockPanel&#xff0c;英文释义为停靠面板&#xff0c;那是怎么个停靠法呢&#xff1f;如下&#xff1a; <Window x:Class"LearnLayout.DockPanelWin"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http:/…

数字图像处理

文章目录图像复原上升阶跃边缘、下降阶跃边缘、脉冲状边缘和屋顶状边缘曲线及其一阶导数和二阶导数有哪些特征&#xff1f;Hough变换的基本思想是什么&#xff1f;基本概念图像增强灰度变换直方图&#xff1a;直方图特点matlab代码空间域滤波平滑空间滤波均值滤波器&#xff1a…

python如何实现多线程

今天本来打算学习学习多进程的&#xff0c;但是由于我现在的电脑没有Linux系统&#xff0c;无法通过Linux系统编辑一些多进程的程序&#xff0c;因此我打算从多线程入手。 多线程 我们的程序一般都是多任务的&#xff0c;如果你没有好好的利用好&#xff0c;运行时就会出现卡…

【读论文】TCL: an ANN-to-SNN Conversion with Trainable Clipping Layers

DAC 2021 背景 通过ANN2SNN的方法得到的SNN中&#xff0c;存在准确性和延迟之间的一种权衡关系&#xff0c;在较大的数据集&#xff08;如ImageNet&#xff09;上可能会有较高的延迟。 主要贡献 分析了转换后SNN精度与延迟之间存在权衡关系的原因&#xff0c;并指出了如何缓…

6587: 计算分段函数

描述本题目要求计算下列分段函数f(x)的值&#xff1a;输入输入在一行中给出实数x。输出在一行中按“f(x) result”的格式输出&#xff0c;其中x与result都保留两位小数。样例输入10样例输出f(10.00) 3.16提示C/C可在头文件中包含math.h&#xff0c;并调用sqrt函数求平方根&am…