基於mtk平台除錯FM發射晶元KT0805

2021-07-10 03:41:51 字數 2477 閱讀 8438

乙個比較簡單的i2c裝置,原理圖如下,

主要是供電,硬體連線好了,軟體不需要處理,音訊資料是接在耳機模式上au_hpl,au_hpr,資料晶元自己接受發射,

軟體需要處理的是sw1或者sw2,連線的gpio,選擇不同的頻率,簡單就是拉高就ok了,硬體已經選擇了。然後通過i2c設定fm發射頻率。

1、需要給上層提供幾個介面,開啟和關閉功能,即耳機插入和撥出一樣,還有乙個就是設定頻率功能。

這三個介面都可以通過sys檔案系統或者proc檔案系統來操作。在使用sys/class檔案系統進行echo操作時,居然不能夠輸入資料,沒有搞明白mtk平台為啥不行,我在高通,展訊平台都是可以的,奇怪了,後來只有使用proc檔案系統進行echo輸入資料。

再到平台相應的關機耳機部分的驅動,在probe中

#ifdef fm_accdet_tx//

device_create_file(accdet_nor_device, &dev_attr_fmtransmitter);

//device_create_file(accdet_nor_device, &dev_attr_fmtransmitterfrq);

_create_procfs();

#endif

#ifdef fm_accdet_tx

static void accdet_fmtx_enable()

//static ssize_t store_fmtx_disable(struct device_driver *ddri, char *buf, size_t count)

static ssize_t show_fmtx_enable(struct device_driver *ddri, char *buf)

static ssize_t store_fmtx_disable(struct device_driver *ddri, char *buf, size_t count)

//static ssize_t show_fmtx_enable(struct device_driver *ddri, char *buf)

//static ssize_t store_fmtx_disable(struct device *dev,struct device_attribute *attr, const char *buf, size_t size)

//static void store_fmtx_disable()

int kttx_frq;

extern int kt_bus_read(kal_uint8 addr, kal_uint8 *returndata);

externint kt_bus_write(kal_uint8 addr, kal_uint8 writedata);

void kt_txtune (int frequency)// exemple :91.55mhz---> *freqency = 9155;

else

}int strtoint(const char *str,int len)

return result;

}static char *_copy_from_user_for_proc(const char __user *buffer, size_t count)

static device_attr(fmtransmitter,0777, show_fmtx_enable, store_fmtx_disable);

//static device_attr(fmtransmitterfrq,0777, show_fmtxfrq, store_fmtxfrq);

static int accdet_fmtx_proc_show(struct seq_file *m, void *v)

static ssize_t accdet_fmtx_proc_write(struct file *file, const char __user *buffer, size_t count, loff_t *pos)

#define proc_fops_rw(name)\

static int name ## _proc_open(struct inode *inode, struct file *file)\

\static const struct file_operations name ## _proc_fops =

#define proc_entry(name)

proc_fops_rw(accdet_fmtx);

static int _create_procfs(void)

;const struct pentry entries = ;

dir = proc_mkdir("accdetfmtx", null);

if (!dir)

for (i = 0; i < array_size(entries); i++)

return 0;

}

回聲消除晶元FM1182除錯

回聲消除晶元fm1182除錯 fm1182是被大量應用的回聲消除晶元,效果明顯,不過內部引數眾多,想除錯好不容易.內部框圖 fm1182有兩個通話通道,從而實現雙工通訊 mic0 mic1 line out line in spk out 推薦工作引數 十大注意點 1.fm1182的回聲消除模組是通...

MTK平台驅動除錯指南

gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...

MTK平台驅動除錯指南

gpio設定篇 一 gpio有關的函式 1 gpio modesetup 函式原型 void gpio modesetup kal uint16 pin,kal uint16 conf dada 功能 設定gpio的工作模式是作為gpio,還是作為專有功能介面。引數 pin gpio 的pin腳號,...