搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
菜鸟追梦旅行
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
微信小程序第三章总结
2
【华为 ICT & HCIA & eNSP 习题汇总】——题目集2_华为ensp防火墙考试题
3
华为的鸿蒙是不是抄袭安卓,华为:不是抄袭安卓和iOS 鸿蒙系统拥有更多可能...
4
Vue中this.$router.push传参方式_this.$router.push 传参
5
Git简易教程,快速上手-Mac版_git mac 使用
6
Rider调试UE5源码时部分源文件无法识别问题_ue 不识别头文件
7
测试时间不够,项目要如期发布该怎么办?_如果有一个需求下星期要上线,但是开发说最快要半个月,怎么解决
8
maven指定html找不到页面,IDEA中HTML通过servlet3.0注解名提交表单到servlet类找不到页面的问题...
9
实验室管理系统LIMS有没有好的企业推荐?_lims系统 排名
10
从验证训练角度解读YOLOV5的源码:程序是如何得到最后输出的maps,正确率等信息的?_self.nt_per_class = np.bincount(stats[-1].astype(i
当前位置:
article
> 正文
如何在mtk andorid6.0上添加一个I2C驱动(这里是添加一个FM 芯片驱动)_cubeide i2c驱动hs6760
作者:菜鸟追梦旅行 | 2024-03-19 01:18:47
赞
踩
cubeide i2c驱动hs6760
平台:mt6737 android 6.0
#include <linux/init.h>
#include <linux/module.h>
//#include <stdlib.h>
#include <linux/i2c.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/ioctl.h>
#include <linux/uaccess.h>
#include <linux/delay.h>
#include <linux/string.h>
#include <linux/wait.h>
#include <linux/platform_device.h>
#include <linux/gpio.h>
#include <linux/pinctrl/consumer.h>
#include <linux/of_gpio.h>
#include <linux/delay.h>
static void fm_set_gpio_output(unsigned int GPIO, unsigned int output);
static unsigned int GPIO_FM_PWR_EN;
static unsigned int GPIO_SPK_PWR_EN;
#define HS6760_I2C_ID 0x18
//#define Clock_12M // Clock_7v6M//Clock_12M//Clock_24M//Clock_32v768K//选择时钟频率
static struct i2c_client *HS6760_client = NULL;
static struct class *cls = NULL;
static unsigned int major;
static char *name = "fm_hs6760";
typedef enum
{
hs6760_normal = 0,
hs6760_mute = 1,
hs6760_sleep = 2,
MODE_NULL
}MODE;
typedef enum
{
_75K = 0,
_50K = 1,
_22v5K = 2,
DEV_NULL
}DEV;
typedef enum
{
disable = 0,
enable = 1,
STATE_NULL
}STATE;
void HS6760_Initial(void);
void HS6760_SetFreq(uint16_t curFreq);
void HS6760_SetPow(uint8_t power);
void HS6760_Reset(void);
void HS6760_Fre_dev(DEV deviation);
void HS6760_Sel_mode(MODE mode);
void HS6760_Stereo(STATE flag);
static int Delayms(u32 data)
{
printk("delay %dms\n", data);
mdelay(data);//msleep(data);
return 0;
}
void ext_spkamp_enable(void)
{
printk(" fm --- ext_spkamp_enable!\n");
fm_set_gpio_output(GPIO_SPK_PWR_EN , 1);
}
void ext_spkamp_disable(void)
{
printk(" fm --- ext_spkamp_disable!\n");
fm_set_gpio_output(GPIO_SPK_PWR_EN , 0);
}
void HS6760_FM3V3_enable(void) //打开HS6760
{
printk(" fm --- HS6760_FM3V3_enable!\n");
fm_set_gpio_output(GPIO_FM_PWR_EN, 1);
}
void HS6760_FM3V3_disable(void) //关闭HS6760
{
printk(" fm --- HS6760_FM3V3_disable!\n");
fm_set_gpio_output(GPIO_FM_PWR_EN, 0);
}
static int HS6760_i2c_read(u8 reg)
{
unsigned char val[1] = {0};
int ret = 0;
val[0] = reg;
ret = i2c_master_send(HS6760_client, val, 1);
if (ret < 0)
{
printk(" fm --- HS6760_i2c_read I2C i/o error ret = %d\n", ret);
return ret;
}
mdelay(10);
ret = i2c_master_recv(HS6760_client, val, 1);
if (ret < 0)
{
printk(" fm --- HS6760_i2c_read I2C read error ret = %d\n", ret);
return ret;
}
return val[0];
}
static int HS6760_i2c_write(u8 reg, u8 writedata)
{
u8 databuf[2] = {0};
int ret = 0;
databuf[0] = reg;
databuf[1] = writedata;
ret = i2c_master_send(HS6760_client, databuf, 2);
printk(" fm --- HS6760_i2c_write ret=%d, databuf[0]=%d, databuf[1]=%d\n", ret, databuf[0], databuf[1]);
if(ret < 0)
{
printk(" fm --- HS6760_i2c_write send data failed !\n");
return -1;
}
return ret;
}
void HS6760_Initial(void)
{
uint8_t RegData;
#ifdef Clock_24M
RegData = 0x36; //PGA12dB,24M晶振
printk(" fm ---HS6760 : HS6760_Initial Clock_24M !!\n");
#else
#ifdef Clock_12M
RegData = 0x34; //PGA12dB,12M晶
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/266560?site
推荐阅读
article
uboot
命令
解释与运行分析_
usage
unkown
command
fash
...
这一回来分析一下
uboot
中
命令
行的解释, 所以我们直接从main_loop开始分析.1. 从汇编阶段进入c阶段的第一个...
赞
踩
article
M1 Mac
安装
MySQL
教程;
my
.cnf
文件
配置
;
环境变量
配置
;完全卸载
MySQL
教程,亲测有效...
(M1)Mac
安装
MySQL
教程,
环境变量
配置
,
配置
my
.cnf
文件
以及完全卸载
MySQL
,亲测有效_mac dmg 安...
赞
踩
article
【
Unity
入门】
Input
.
GetAxis
(““)
控制
物体移动、旋转_
unity
getaxies
...
Input
.
GetAxis
("") 是
Unity
引擎中的一个方法,用于获取游戏玩家在 键盘 或 游戏手柄 上输入的某...
赞
踩
article
阿里云Linux (Centos
7
) 指定
目录
安装
mysql
--
ARM版系统
安装
失败_mysq...
1、下载
mysql
tar.gz
安装
包
安装
包下载链接:,经历过一次失败 发现这个
安装
包版本选择很重要,centos
7
的...
赞
踩
article
方舟
编译
器
编译
HarmonyOS
应用
的详细过程_
harmonyos
系统
方舟
编译
器
...
方舟
编译
器
在
HarmonyOS
应用
开发中扮演着重要的角色,它能将开发者编写的高级语言代码转化为可执行的机器码。在Harm...
赞
踩
article
【
uniapp
】
表单
验证
不生效的
解决方案
...
表单
验证
这个常见的功能,明明在element ui等框架已经用的很熟了,在
uniapp
开发时还是处处碰壁?这篇文章我会提...
赞
踩
article
OpenMP
(仅供
学习
使用
)...
OpenMP
(Open Multi-Processing) 是一种用于并行编程的应用程序接口 (API),它针对共享内...
赞
踩
article
三套大厂
网络安全
工程师
面试题
(
附答案解析
)
冲刺
金三银
四...
三套大厂
网络安全
工程师
面试题
(
附答案解析
)
助力你在
金三银
四中斩获心仪的大厂offer!三套大厂
网络安全
工程师
面试题
(
附答...
赞
踩
article
HarmonyOS-Huawei
DevEco
Studio
运行
Hello
Word_
deveco
...
1 创建和运行
Hello
World
DevEco
Studio
开发环境配置完成后,可以通过运行
Hello
World...
赞
踩
article
Mac
m1
配置
mysql
_mac
m1
mysql
...
mysql
数据库
配置
_mac
m1
mysql
mac
m1
mysql
...
赞
踩
article
sql
注入
——
pikachu
靶场
_
sql
注入
靶机...
(1)先用burpsuit抓包,或使用浏览器开发者工具找到请求data。10,时间盲注,原理:如果可以
注入
,就延时,如果...
赞
踩
article
CSS
设置
阴影
样式
大全 包含所
有
样式
有
图
有
代码...
常用的
样式
:下面还
有
特殊的效果