乙個比較簡單的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腳號,...