新聞中心
隨著物聯(lián)網(wǎng)的快速發(fā)展,各種設(shè)備的數(shù)量也在快速增長,傳感器,執(zhí)行設(shè)備,控制器等各種外圍設(shè)備的接口數(shù)量多得難以計(jì)算,這就需要采用一種通用的總線系統(tǒng)來連接各外圍設(shè)備,這就是I2C總線。I2C有兩個(gè)數(shù)據(jù)總線,可實(shí)現(xiàn)半雙工傳輸,支持多主機(jī)和多從設(shè)備,I2C總線通信開銷小,簡單,輕量級(jí),容易接入,延時(shí)低,因此是智能設(shè)備中最常用的總線系統(tǒng)。

linux I2C驅(qū)動(dòng)程序用來驅(qū)動(dòng)硬件設(shè)備,它是一個(gè)特定協(xié)議,在應(yīng)用層提供了接口和設(shè)備驅(qū)動(dòng)之間的接口。I2C驅(qū)動(dòng)程序不僅可以通過硬件設(shè)備的I2C總線來進(jìn)行數(shù)據(jù)的傳輸,同時(shí)也能夠支持Linux的i2c-dev框架,也就是通過讀寫文件的形式來操作硬件設(shè)備(文件的讀寫映射成i2c_smbus函數(shù),因此可以訪問私有的I2C總線的硬件設(shè)備),從而帶來了更靈活的操作方法,更加安全便捷。
下面介紹一個(gè)簡單的I2C驅(qū)動(dòng)程序示例:氣壓傳感器BMP085。
首先,將氣壓傳感器BMP085連接到系統(tǒng),然后在I2C總線上定義一個(gè)設(shè)備結(jié)構(gòu)體
“`c
struct i2c_client *BMP085_client;
然后在I2C設(shè)備注冊函數(shù)中初始化客戶端,代碼如下:
```c
BMP085_client = i2c_new_device(adapter, &BMP085_info);
之后,我們需要?jiǎng)?chuàng)建操縱I2C總線的一些函數(shù),以完成一系列I2C設(shè)備操作。代碼如下:
“`c
//定義I2C設(shè)備操作函數(shù)
static const struct i2c_device_id BMP085_id[] = {
{“BMP085”, 0},
{}
};
static const struct of_device_id BMP085_match_table[] = {
{ .compatible = “BMP085” },
{},
};
static struct i2c_Driver BMP085_driver = {
.driver = {
.name = “BMP085”,
.owner = THIS_MODULE,
.of_match_table = BMP085_match_table,
},
.id_table = BMP085_id,
.probe = BMP085_probe,
.remove = BMP085_remove,
};
//注冊I2C設(shè)備到I2C內(nèi)核總線
static int __init BMP085_init(void) {
//注冊I2C驅(qū)動(dòng)
i2c_add_driver(&BMP085_driver);
return 0;
}
module_init(BMP085_init);
static void __exit BMP085_exit(void)
{
i2c_del_driver(&BMP085_driver);
}
module_exit(BMP085_exit);
通過上面的代碼,根據(jù)提供的接口,我們就可以實(shí)現(xiàn)對設(shè)備的操作。
總而言之,linux i2c驅(qū)動(dòng)程序可以通過多種安全而快速的方式來控制I2C總線上各種外圍設(shè)備,例如氣壓傳感器,磁盤驅(qū)動(dòng)器,鍵盤,鼠標(biāo)等,是嵌入式系統(tǒng)中不可缺少的基礎(chǔ)模塊。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌網(wǎng)站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
標(biāo)題名稱:LinuxI2C驅(qū)動(dòng)程序:又快又安全(linuxi2c驅(qū)動(dòng))
標(biāo)題來源:http://www.dlmjj.cn/article/ccedhgg.html


咨詢
建站咨詢
