發布日期:2022-10-09 點擊率:1434
IIC調試學習
由于項目要用到溫度傳感器,所以就挑選了TI的一款溫度傳感器Tmp102,這款溫度傳感器和TI的很多溫度傳感器都類似,比如Tmp112,lm75,lm75a等。這款溫度傳感器所用到的通信方式為IIC,之前僅僅了解過IIC并沒有進行實際的操作,借著這個機會進行實際的IIC運用和學習。
其中IIC的基礎知識點就不詳細說明了,想要進行IIC的編程和學習,首先學習的應該是他的基本知識,只有知道了他的基礎知識才能夠進行有條不紊的應用。
我用的單片機是STM32F103ZET6,IIC為軟件的形式是實現
IIC協議軟件實現
產生開始信號
2.產生停止信號
3.主機等待從機應答
4.主機不產生應答
5.主機產生應答
6.IIC發送一個字節
6.IIC讀一個字節
溫度傳感器實現
1.溫度傳感器初始化
2.溫度傳感器讀取一個字節
3.溫度傳感器讀取一個字
4.寫入一個字節
5.寫入一個字
主函數
實際測試效果
圖片:
代碼下載
鏈接: //download.csdn.net/download/little_ox/.
需求:
? 讀嵌入式溫度傳感器的值。
已知條件:
*溫度傳感器已經在主板上焊好了。
*溫度傳感器型號為lm75
*linux自帶驅動,在linux-2.6.20.21/drivers/hwmon/lm75.c
*溫度傳感器的電路
?
問題與解答:
*linux自帶的驅動怎么用的?
看lm75.c的代碼,發現此溫度傳感器用的是I2C的總線。
代碼中看到i2c驅動的接口定義如下,和以前做過的字符型驅動的接口不一樣。
static struct i2c_driver lm75_driver = {
.driver = {
.name = "lm75",
},
.id = I2C_DRIVERID_LM75,
.attach_adapter = lm75_attach_adapter,
.detach_client = lm75_detach_client,
};
在linux Device Driver這本書中搜,在此書中無介紹。
?
講得還不錯。尤其是后者對路。I2C在讀主板上的傳感器的應用上應用比較多,但它是在比較新的版本的LINUX內核版本中才加進來的,難怪LDD這本書中沒有講了。
再看上面數據結構中的回調函數,具體干什么就比較清楚了。根據函數內容得知,驅動在加載的時候會自動檢測I2C總線上的設備,因此會自動發現溫度傳感器。lm75_update_device()是對溫度傳感器進行輪詢讀數時用的函數。
根據文章指引,看設備的/sys/bus/i2c/。下面已經有了lm75傳感器的數據,直接讀是有數據的,而且數據會變化,如下:
root:~# cat /sys/bus/i2c/devices/0-0048/temp1_input
-
*讀數為負。什么樣的讀數才是正常的?
在驅動代碼里增加了調試信息,打印出傳感器上讀的寄存器的值,和文件系統上讀出的不一樣。
看 linux-2.6.20.21/documentation/hwmon/lm75,了解到lm75是一個工業標準。所以linux里的lm75驅動是支持多種溫度傳感器的。
看了一下板子上的芯片,是lm75A.在網上下載了一個datasheet,上面顯示一共9-bit來控制讀數。頭位為正負,后面8-bit為值。
在驅動代碼里添加調試信息,只打印寄存器值的后8-bit,放到溫度實驗箱里測試的結果看起來滿合理的。
@drivers/base/sys.c
static ssize_t
sysdev_show(struct kobject * kobj, struct attribute * attr, char * buffer)
{
struct sys_device * sysdev = to_sysdev(kobj);
struct sysdev_attribute * sysdev_attr = to_sysdev_attr(attr);
if (sysdev_attr->show)
return sysdev_attr->show(sysdev, buffer);
return -EIO;
}
?
?static DEVICE_ATTR(temp1_input, S_IRUGO, show_temp_input, NULL);
?
?
struct device_attribute {
struct attribute attr;
ssize_t (*show)(struct device *dev, struct device_attribute *attr,
char *buf);
ssize_t (*store)(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count);
};
#define show(value) /
static ssize_t show_##value(struct device *dev, struct device_attribute *attr, char *buf) /
{ /
struct lm75_data *data = lm75_update_device(dev); /
return sprintf(buf, "%d/n", LM75_TEMP_FROM_REG(data->value)); /
///sys/bus/i2c/devices/0-0048/temp1_input里面的東西就是通過上面打印到buffer中去的
}
show(temp_input);
?
? show_temp_input); //@ show_##value()?
lm75_update_device(dev);?
然后把內核的lm75.h的代碼修正(只讀后面8個比特并根據大小判斷正負),測試通過。
?
?
?
上一篇教程挖了一個NEXYS4 開發板中MicroSD的天坑,發現難度過高,打算放到之后再完成,這一篇來電不這么重口味的溫度傳感器配置。在NEXYS 4開發板上的溫度傳感器使用的是I2C接口,這個接口很常見,可以寫一個模塊留著以后使用
FPGA基礎入門【15】開發板I2C溫度傳感器配置
開發板溫度傳感器I2C接口簡介ADT7420簡介寄存器
邏輯設計I2C控制模塊UART串口控制模塊頂層邏輯
模擬仿真Testbench仿真腳本仿真結果
編譯測試結果
總結
開發板溫度傳感器
NEXYS 4文檔中寫著它使用的溫度傳感器名字是Analog Device ADT7420,提供16位精度,一般精確到0.25攝氏度,用I2C接口和FPGA連接如下:
SCL和SDA是I2C接口,用來和FPGA連接。可以看到它只有兩根線,非常精簡,一般用來和不太復雜的外圍設備連接。并且它還有地址識別,因此1個master設備可以同時和多個slave設備相連。剩下兩條線表示溫度溢出(過高或者過低),以及溫度高到有危險的程度。
ADT7420的文檔鏈接:ADT7420
I2C接口簡介
從ADT7420的文檔中讀到,它的時鐘需求是400kHz以下,我們采用200kHz,需要把系統時鐘100MHz減慢500倍
和這款芯片相關的I2C的時序如下:
寫單字節數據
寫雙字節數據:
從配置寄存器中讀取數據:
讀取溫度數據:
在SCL為高電平時,拉低SDA是開始信號在SCL為高電平時,拉高SDA是結束信號Master設備在讀回信號的最后傳出低電平表示,再來一個,高電平表示,夠了夠了不用再傳了
從這個時序圖看出,I2C讀寫控制參數有四個:讀寫控制、寄存器地址、讀寫數據長度、寫的8位數據(每完成一次輸出就更新一次)
ADT7420簡介
網上很多Arduino用的溫度傳感器模塊用的就是這款芯片,引腳如下:
其中SCL和SDA是和FPGA相連的I2C接口,CT和INT是臨界溫度警告,VDD和GND是電源和接地,A0和A1是低地址位,在芯片較少時可以直接通過連線來同時連接幾個芯片。
NEXYS 4文檔中說要制定slave地址0x4B來和傳感器通信,通過前面的I2C接口介紹可以看出,開發板把A0和A1兩個引腳都拉高了。
ADT7420在上電后會自動進入簡單溫度傳感器模式,不需要初始化配置。設備地址寄存器一開始被指向溫度數據的高位MSB,因此不用制定地址讀出來的第一個字節就是溫度的MSB,第二個字節是LSB,組成需要的16位結果。因此上面的時序圖中讀取溫度的兩步,如果一開始沒有做別的操作,可以把寫地址省略。把16位結果右移3位,再除以16,就可以得到攝氏溫度
寄存器
ADT7420的寄存器全家福及其默認值如下:
這里我們只關注溫度高低位、狀態和配置四個寄存器
溫度高低位:
狀態寄存器,復位后要先等這個寄存器的最高位變成0:
配置寄存器:
邏輯設計
首先需要一個I2C的控制邏輯模塊I2C_transmitter.v,然后就可以配置一個串口控制器,隨時讀取寄存器與數據。這里我們把之前做過的串口模塊集成一下,加個FIFO以便之后再使用
這次的代碼比較長,要把之前做過的一些東西做個綜合
I2C控制模塊
從前面的I2C時序邏輯可以分析,定義一段I2C數據傳輸參數有這么幾個:寄存器地址、讀寫選擇、讀寫長度、需要寫入的8位數據。
新建一個代碼文件I2C_transmitter.v,代碼如下:
頂層接口配置,前面分析過I2C必要參數,還需要一些其他的控制信號
設備地址dev_addr,這個應該連到固定值0x4B讀寫控制rdh_wrl,高電平代表讀,低電平代表寫寄存器地址reg_addr操作準備信號ready,它的上升沿代表數據準備完成,可以進行I2C傳輸輸出8位數據dout傳輸長度dout_length輸出確認dout_ack,表示一個byte已經輸出完成,可以更新到下一個byte輸入8位數據din輸入準備信號din_valid,每當此信號升高,就有一個byte輸入在din接口準備好
生成I2C接口需要的100kHz時鐘,用I2C_SCL_en來使能控制
實時監測SCL的上升沿和下降沿,由于SDA是雙向的信號,讀的時候用上升沿,寫的時候用下降沿,經常需要切換
探測ready信號的上升沿以開始I2C傳輸
狀態機配置
偵測到ready上升沿,在SCL為高的情況下拉低SDA表示開始(Start by master),這也就是SCL生成器在復位情況下為高的原因
輸出設備地址0x4B,帶上最低位為1表示寫入,經歷9個時鐘周期,最后一個上升沿觀察設備是否傳回一個ack信號
寫入寄存器地址,根據讀寫控制信號進入讀流程或者寫流程
當需要讀數據時,需要再次進行Start by master,拉高SDA后,在SCL的高電平時拉低SDA
讀流程還需要再寫一次設備地址,并把最后一位改成高電平以表示讀取
寫操作,將一個byte輸出給設備,獲得ack信號后計算是否已經輸出到指定長度,如果已經達到則進入結束流程
讀操作,從設備讀取一個byte后,如果還沒有讀取足夠數據,則在第九個時鐘周期輸出一個低電平作為ack信號,否則輸出一個高電平作為no ack信號,表示master已經讀取了足夠的數據
結尾操作,關閉SCL生成器,在SCL的高電平拉高SDA(Stop by master)
UART串口控制模塊
看過前面教程的人可能會覺得奇怪,為什么還需要寫UART串口控制的模塊,明明已經有它的邏輯代碼了。問題是ADT7420的I2C接口(包括不少其他芯片的I2C)使用的時鐘是400kHz以下,一般比UART串口用的波特率要高很多,如果繼續用之前的簡單邏輯會出現串口數據還沒送完,新的數據就已經進來的情況。
這里我們改進一下串口邏輯,添加一個同步先入先出隊列(First in first out, FIFO)。FIFO在FPGA設計中非常常見,通過調用少量存儲器平衡寫入和讀出兩端的速度差。同步是指讀寫用的是同一個時鐘,讀寫使能可以在不同的時間段激活,對于高速時鐘控制低速接口很有用。異步FIFO是用在讀寫用的是不同時鐘的情況下(不是讀寫使能信號),比起同步FIFO,它的難點在于跨越了時鐘域,這部分有很多細節,以后再寫。
同步FIFO的代碼syn_fifo.v如下:
頂層接口定義,這里我們用了模塊定義參數,在名稱后面加上井號#與一對括號,在其中定義一些與該模塊有關的參數,比如FIFO的數據寬度和地址長度,這樣在調用相似模塊時不用寫多個模塊,只需要在調用時候配置不同參數即可
接口比較簡單,rd_en讀使能的高電平時讀取一個FIFO數據到data_out,wr_en寫使能的高電平時寫一個data_in到FIFO中,empty和full分表代表FIFO空了或者滿了,避免出現錯誤
最大深度由地址寬度決定,定義RAM的讀指針和寫指針(可循環),加上一個FIFO有效計數器,用來觀察FIFO是空還是滿。
這里data_ram是RAM的核心,定義比較特殊,前面的寬度代表每個地址對應的數據寬度,后面的是定義它的深度
定義一個RAM,通過操控讀寫的地址來讀寫數據
有了FIFO的代碼,我們可以改進之前的串口控制代碼為UART_transmitter.v:
頂層定義,除了UART必要的接口外,加上dout、din以及他們的準備信號。這些信號都是十六進制數,每4位都是一位數
加入前面寫好的FIFO代碼,調用時參數的配置可以參考下面的代碼
和之前差不多的串口發送端代碼,去除了接收回傳,這部分由調用串口模塊的頂層做
和之前差不多的串口接收邏輯,加入了轉換成16進制數的邏輯,每次輸出一個4位的十六進制數
頂層邏輯
做好兩個接口的準備工作,開始寫頂層的temperature.v:
頂層定義,時鐘復位和LED,I2C接口以及UART串口接口
將ADT7420另外兩個引腳直接連接到LED上
調用前面寫好的I2C控制器
調用前面寫好的UART串口控制模塊
根據串口接收到的指令,進行不同的讀寫操作
0讀取溫度數據,傳回四個byte1讀取ADT7420的狀態寄存器,期望是0x002讀取溫度上限高位寄存器3把溫度上限設置為28攝氏度4把溫度上限改回默認的64攝氏度
另外把串口接收到的數據重傳回PC,用來顯示自己打入的命令,由于收到的是4位,而輸出是8位,在高位加4位0
模擬仿真
和之前一樣,要寫一個Testbench和一個仿真腳本來仿真
Testbench
代碼tb_temperature如下:
復位以后,參考I2C的時序,接收或者傳回生成的數據,使用指令0,讀取溫度數據
仿真腳本
寫腳本sim.do如下:
調用前面全部的代碼,打開ModelSim后轉到腳本在的路徑,使用命令do sim.do即可開始仿真。
仿真時可以添加想要的信號到waveform窗口中觀察,然后可以保存為wave.do,這樣下次可以通過調用它來加入一樣的信號,節省一個一個加入的時間,這時你可以把sim.do中被#注釋掉的那行去注釋
仿真結果
調用仿真腳本得到的結果如下:
和前面介紹的I2C時序比較可以看出是符合預期的,當中的一些藍色和紅色是由于Testbench畢竟不是真實芯片,無法返回完美的確認信號ack,之后可以用ChipScope來觀察I2C信號
編譯測試
新建一個叫temperature的project,配置為開發板NEXYS4。添加代碼文件temperature.v、I2C_transmitter.v、UART_transmitter.v和syn_fifo.v
下一步加入約束constraint文件temperature.xdc,同樣這是用標準模板取自己需要部分修改出來的(NEXYS 4 DDR Master XDC):
到這里可以點擊 Run Synthesis做綜合,幾分鐘完成后用Set Up Debug配置ChipScope,加入和I2C有關的接口SCL和SDA(進出兩個口),并設置長度為:
下面就可以Run Implementation和Generate Bitstream生成bitstream了。
和前面的教程一樣,USB線連接NEXYS4板子,開啟Hardware Manager,然后auto連接上板子,Program Device燒寫進程序,注意Debug probes file有對應的ltx文件。
結果
打開Putty串口接口,具體配置可以參考教程系列11,分別打入幾個指令后收到結果如下:
指令00讀取溫度,返回0x0DC8,根據溫度的計算方式,右移3位后除以16,得到溫度27.5625攝氏度,當然精度沒有這么高,只是計算的結果指令01讀取狀態寄存器,如同預料的返回0x00指令02讀取溫度上限的高位,返回了默認值0x20,表示64攝氏度指令03寫溫度上限的高位為0x0E,表示28攝氏度,不會返回數據再用指令02讀取溫度上限高位,返回的是剛剛寫入的0x0E指令04把溫度上限的高位寫回0x20再用指令02,讀回的是0x20
調用ChipScope,設置trigger為SCL的下降沿,分別在putty打入指令0和3顯示如下:
這個波形圖基本展示了I2C讀和寫的時序圖,就算不是使用FPGA,應該也可以參考這兩張圖。
總結
沒能填上上期說的SD卡的坑,那部分要放到最后。下一篇要介紹板載的加速度傳感器accelerometer ADXL362
相關推薦
羅姆公司的ML5238電壓采集芯片問題
發表于 2018-04-09 16:58
?
66次閱讀
溫度傳感器I2C的總線應用及設計
需求:讀嵌入式溫度傳感器的值。已知條件:*溫度傳感器已經在主板上焊好了。*溫度傳感器型號為lm75*...
發表于 2018-04-07 07:11
?
1147次閱讀
基于Proteus的SPI接口的設計與實現方案資...
基于Proteus的SPI接口的設計與實現 現在,人們生活中的每個角落都有 嵌入式 設備的存在,比如...
發表于 2018-04-05 09:31
?
61次閱讀
at24c04中文資料匯總(at24c04引腳圖...
本文主要介紹了at24c04中文資料匯總(at24c04引腳圖及功能_工作原理及電路圖)。AT24C...
發表于 2018-04-04 16:26
?
107次閱讀
詳細講解RT-Thread I2C設備驅動框架及...
本應用筆記以驅動I2C接口的6軸傳感器MPU6050為例,說明了如何使用I2C設備驅動接口開發應用程...
發表于 2018-03-29 10:52
?
203次閱讀
新手關于I2C,master轉slave的一些問題
發表于 2018-03-26 10:54
?
199次閱讀
淺淡CAN總線,CAN總線網絡拓撲結構
CAN 總線網絡是一種真正的多主機網絡,在總線處于空閑狀態時,任何一個節點單元都可以申請成為主機,向...
發表于 2018-03-22 11:13
?
504次閱讀
基于I2C接口與上級無線傳感器網絡通信的環境監測...
本項目開發了一個使用 Xilinx 公司的 SPARTAN3A-DSP FPGA 作為目標開發板,采...
發表于 2018-03-21 16:46
?
267次閱讀
淺談I2C總線,I2C接口和SPI接口的作用相同
SDA 和 SCL 都是雙向的。SPI 總線有兩根單獨的線,分別用于兩個方向的通信,而 I2C 總線...
發表于 2018-03-21 10:24
?
2572次閱讀
根據時鐘極性和時鐘相位的不同,SPI有四個工作模...
串行外圍設備接口是由 Motorola 公司開發的,用來在微控制器和外圍設備芯片之間提供一個低成本、...
發表于 2018-03-20 11:43
?
514次閱讀
單片機與數字溫度接口及程序設計分析
數字式溫度傳感器(簡稱SWC),又稱集成數字脈沖式感溫探頭,是一種新型的三端溫度變送器件。該器件采用...
發表于 2018-03-17 11:40
?
472次閱讀
串行SPI Nor Flash啟動流程
關于外部Flash的代碼安全問題和代碼在外部執行對整個系統性能的影響,RT105x的加密啟動(HA...
發表于 2018-03-16 09:32
?
650次閱讀
模擬SPI數據傳輸的讀寫程序(時鐘芯片DS130...
在時鐘的上升沿是寫入數據,是從低位開始寫入。還有一個需要注意的地方是寫字節和讀字節連接處,從圖中可以...
發表于 2018-03-14 14:46
?
231次閱讀
代碼分析:九軸姿態傳感器是無人機中必備重要器件。
SPI連接的是型號為BMI160的六軸加速度計和陀螺儀傳感器。具體是如何通過寄存器的讀取加速度值的我...
發表于 2018-03-12 11:29
?
630次閱讀
教你分清楚SPI、I2C、UART、I2S、GP...
一個由CAN總線構成的單一網絡中,理論上可以掛接無數個節點。實際應用中,節點數目受網絡硬件的電氣特性...
發表于 2018-03-12 08:53
?
692次閱讀
SPI通信總線的原理及工作過程簡單分析
SPI, 串行外圍設備接口。高速的,全雙工的,同步通信總線。有四個引腳:SDI(數據輸入),SDO(...
發表于 2018-03-08 09:39
?
709次閱讀
高通gpio模擬i2c
發表于 2018-03-07 09:11
?
467次閱讀
CAN總線,I2C,USB等的FPGA實現源碼
發表于 2018-02-27 12:53
?
315次閱讀
深度解讀SPI特點、機制和驅動以及其舉例
SPI,是英語Serial Peripheral interface的縮寫,顧名思義就是串行外圍設備...
發表于 2018-02-19 09:58
?
1712次閱讀
MSP430f249使用SPI通信遇到問題
發表于 2018-02-18 15:12
?
890次閱讀
DSP虛擬I2C軟件包的應用設計案例
TMS320C2XX系列產品,基本包括4根通用I/O口線I/O0~I/O4(由于XF僅能作為輸入口線...
發表于 2018-02-12 16:35
?
271次閱讀
基于S3C2410的串行外圍設備接口SPI實現數...
串行外圍設備 接口 SPI (serial peripheral interface)總線技術是Mo...
發表于 2018-02-07 09:16
?
150次閱讀
分享一個用計算機直接通過串口驅動DS1621測溫...
今天發現的這個實驗作品非常經典,用計算機直接通過串口驅動DS1621測溫,整個測溫模塊精簡之至,沒有...
發表于 2018-02-05 16:55
?
1268次閱讀
如何使用單片機I/O口模擬I2C信號讀取SHT30溫濕度。
發表于 2018-02-05 09:02
?
794次閱讀
SPI接口的概念,數據傳輸, 時鐘極性、時鐘相位...
SPI(Serial Peripheral Interface,串行外設接口)是Motorola公司...
發表于 2018-02-05 08:49
?
5138次閱讀
spi讀取sd卡數據例程
SD 卡有兩個可選的通訊協議:SD 模式和 SPI模式 SD 模式是SD 卡標準的讀寫方式,但是在選...
發表于 2018-02-02 13:55
?
105次閱讀
SPI的MRST和SDO怎么接
發表于 2018-02-02 10:47
?
291次閱讀
i2s和i2c的區別
I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總...
發表于 2018-01-29 16:47
?
620次閱讀
數字溫度傳感器全方面分析介紹
數字溫度傳感器有兩種:本地或遠程溫度傳感器,它們均采用某種方法強制兩個成比例的電流通過一個連接成二極...
發表于 2018-01-22 14:37
?
290次閱讀
nrf24l01+和stm32的spi通訊需要設置nrf24l01+的spi波特率嗎
發表于 2018-01-21 17:16
?
600次閱讀
I2C總線主機和從機之間加隔離開關后,不能通訊(從機無應答)
發表于 2018-01-20 08:07
?
609次閱讀
實現智能家電控制系統設計方案的幾大關鍵點
計算機網絡、通信和控制技術的發展使家電的集中和遠程智能控制成為可能,將信息技術和家電技術相融合,在更...
發表于 2018-01-18 07:37
?
1949次閱讀
SPI-WIFI模塊讓普通單片機實現“有效速度”過兆字節每秒的高速傳輸不再是夢想
發表于 2018-01-17 12:51
?
411次閱讀
深度解析IO模擬時序(SPI)的注意事項
有硬件I2C、SPI時盡量用硬件操作,省去IO模擬繁瑣的時序調試。但在內部資源不夠時就要用IO模擬總...
發表于 2018-01-17 09:37
?
1359次閱讀
STM32通過I2C與BMP280通信
BMP280對溫度和氣壓的測量是通過一堆補償數據然后根據自己的算法算出來的,要注意這些數據是什么類型...
發表于 2018-01-12 13:14
?
898次閱讀
揭開Zynq Z-7000從SPI接口掛載的fl...
今天給各位介紹另外一款Xilinx公司芯片的產品Zynq Z-7000 SoC,我們一起來揭開它從S...
發表于 2018-01-10 10:37
?
1516次閱讀
詳細剖析I2C和SPI通信協議的區別
IIC和SPI都對低速設備通信提供了很好的支持,不過,SPI適合數據流應用,而IIC更適合“字節設備...
發表于 2018-01-03 11:40
?
1246次閱讀
spi從機程序設計_spi從機程序代碼詳細介紹
本文介紹STM32F407的SPI主從機通信程序和基于計數器的spi從機程序這兩種spi從機程序
發表于 2017-12-29 15:05
?
336次閱讀
I2C總線的特點、控制技術與傳輸分析
I2C總線主要在微處理器的控制之下,因此通常稱微處理器是I2C總線的主機。習慣上總稱受控設備及功能電...
發表于 2017-12-25 15:17
?
944次閱讀
嵌入式工程師詳解常用的IIC和SPI總線協議概念
IIC vs SPI 現今,在低端數字通信應用領域,我們隨處可見IIC (Inter-Integra...
發表于 2017-12-22 20:15
?
162次閱讀
深度解析IIC和SPI總線協議的區別與應用場景
IIC vs SPI: 哪位是贏家?我們來對比一下IIC 和 SPI的一些關鍵點:
第一,總線拓撲...
發表于 2017-12-22 16:48
?
3697次閱讀
詳細講解重用外設驅動代碼_SPI_NOR_Fla...
第六章為重用外設驅動代碼,本文內容為6.2 SPI NOR Flash 存儲器。
發表于 2017-12-21 07:59
?
2668次閱讀
基于Linux驅動的I2C總線的深度分析
I2C總線的硬件特性:兩線式串行總線.用于連接CPU和外設之間的通信接口需要2根信號線,時鐘控制線S...
發表于 2017-12-18 16:31
?
719次閱讀
iic和spi有什么區別
IIC的數據輸入輸出用的是一根線,SPI則分為data IN和 data OUT。由于這個原因,采用...
發表于 2017-12-12 11:51
?
461次閱讀
I2C和SPI總線協議詳解
一種只使用二根線接連所有外圍芯片的總線協議。最初的標準定義總線速度為100kbps。經歷幾次修訂,主...
發表于 2017-12-12 11:08
?
1319次閱讀
mpu6050對應i2c地址是什么_如何讀取數據
本文主要介紹了mpu6050對應i2c地址是什么,并通過stm32的硬件讀取mpu6050的數據。M...
發表于 2017-12-11 16:04
?
963次閱讀
spi與i2c總線協議的對比分析
現今,在低端數字通信應用領域,我們隨處可見I2C (Inter-Integrated Circuit...
發表于 2017-12-06 11:57
?
222次閱讀
spi與i2c總線有什么區別
SPI是串行外設接口(Serial Peripheral Interface)的縮寫。I2C總線是一...
發表于 2017-12-06 11:39
?
323次閱讀
LTC3675 非常適用于要求用單節鋰離子電池提...
LTC3675 是一個節省空間的單芯片電源解決方案,適用于靠單節鋰離子電池運行的多軌應用。其 4mm...
發表于 2017-12-04 01:13
?
154次閱讀
軟件模擬SPI接口的實現方法過程詳解
由于SPI總線接口只占用微處理器四個I/O口線,采用SPI總線接口可以簡化電路沒計,節省很多常規電路...
發表于 2017-12-01 11:13
?
1189次閱讀
u-boot i2c的調試
有許多外設芯片都通過i2c總線接到主芯片上,主芯片通過i2c發命令去初始化外設芯片。
發表于 2017-11-27 15:00
?
163次閱讀
Stm32的io口模擬spi例程分析
SPCE061A的I/O端口,對某一位的設定包括以下3個基本項:數據向量Data、屬性向量Attri...
發表于 2017-11-24 17:45
?
491次閱讀
基于FPGA的SPI串行方式自動發送技術設計
SPI接口應用十分廣泛,在很多情況下,人們會用軟件模擬的方法來產生SPI時序或是采用帶SPI功能模塊...
發表于 2017-11-24 15:32
?
310次閱讀
Arduino主從機之間的I2C通訊實驗
I2C總線是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據。在CPU與被控IC之間、IC...
發表于 2017-11-23 16:20
?
681次閱讀
一種可復用的高速SPI總線的設計
隨著計算機處理能力及存儲規模的迅速增長,這個問題表現得更加突出。為此人們采取了各種軟、硬件的方法,不...
發表于 2017-11-23 15:40
?
244次閱讀
一文讀懂i2c的總線信號傳輸
總線空閑狀態 I2C總線總線的SDA和SCL兩條信號線同時處于高電平時,規定為總線的空閑狀態。此...
發表于 2017-11-21 15:09
?
2321次閱讀
全面剖析i2c總線的原理與控制技術
IIC總線,是INTER-IC串行總線的縮寫。INTER-IC原文大意是用于相互作用的集成電路,這種...
發表于 2017-11-20 10:54
?
1240次閱讀
EMIO方式模擬I2C時序對ADV7511進行讀...
創建硬件工程,很簡單,PS接出兩個EMIO和一個74.25M時鐘
發表于 2017-11-18 13:50
?
218次閱讀
FPGA多重加載技術的設計模塊及其在硬件平臺上的...
Xilinx 7系列FPGA是Xilinx公司最新推出的一個芯片系列,Kintex7是該系列芯片中...
發表于 2017-11-18 04:41
?
253次閱讀
在ZedBoard下SPI接口和ARM處理器端實...
該文介紹了ZedBoard平臺下可編程邏輯端SPI接口和ARM處理器端以太網遠端傳輸的設計。結合實例...
發表于 2017-11-17 12:12
?
176次閱讀
I2C標準協議的時序時鐘問題詳解
對于嵌入式開發的朋友來說,I2C協議實在是再熟悉不過了,有太多的器件,采用的都是通過I2C來進行相應...
發表于 2017-11-15 15:08
?
286次閱讀
對三種總線SPI、UART、I2C分析理解
SPI(Serial Peripheral Interface,串行外設接口) SPI是一種高速、全...
發表于 2017-11-15 12:32
?
202次閱讀
數字鎖相環ADF4351原理詳解與合成頻率源的設...
以數字鎖相環ADF4351和Xilinx公司的Spartan-6系FPGA為主要元件設計了一個合成頻...
發表于 2017-11-15 11:27
?
431次閱讀
PIC單片機之I2C(從模式)詳解
I2C總線是由Philips公司開發的一種簡單、雙向二線制同步串行總線。它只需要兩根線即可在連接于總...
發表于 2017-11-14 17:24
?
562次閱讀
i2c時序圖的詳細講解
開始信號:主機+從設備地址+寫命令,從機應答,應答成功,表示有這個設備,然后主機+設備內部寄存器地址...
發表于 2017-11-14 16:59
?
5186次閱讀
ad7190配置GPIO模擬SPI程序源碼
AD7190是一款適合高精密測量應用的低噪聲完整模擬前端。它集成一個低噪聲、24位Σ-Δ型模數轉換...
發表于 2017-11-14 14:14
?
347次閱讀
數字通信協議中,什么是I2C和SPI總線協議?
現今,在低端數字通信應用領域,我們隨處可見IIC (Inter-Integrated Circuit...
發表于 2017-11-12 09:28
?
2434次閱讀
教你如何有效解決I2C配置順序引發無法收發數據問...
在參考Cube軟件包中I2C例程后, 根據應用需要新增了一路I2C接口,結果新增I2C無法收發數據。...
發表于 2017-11-12 08:55
?
3791次閱讀
spi是什么spi檢測是什么意思
SPI是串行外設接口(Serial Peripheral Interface)的縮寫。SPI,是一種...
發表于 2017-11-09 10:01
?
812次閱讀
spi與i2c區別
我相信如果你是從事的是嵌入式開發,一定會用到這三種通信協議,串口的話因為和波特率有關,所以一般的C...
發表于 2017-11-09 09:58
?
488次閱讀
簡述spi與sci區別
SCI串行通信接口(serial communication interface)也是由Motoro...
發表于 2017-11-08 14:46
?
251次閱讀
ds18b20中文資料詳解
DS18B20是常用的數字溫度傳感器,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。DS18B...
發表于 2017-11-06 16:15
?
3630次閱讀
終于看懂了iic與spi這兩種通訊協議了
IIC vs SPI現今,在低端數字通信應用領域,我們隨處可見IIC (Inter-Integrat...
發表于 2017-11-02 11:06
?
5729次閱讀
SPI總線有四種工作方式,哪幾種最為廣泛
SPI總線有四種工作方式(SP0, SP1, SP2, SP3),其中使用的最為廣泛的是SPI0和S...
發表于 2017-10-25 06:44
?
5146次閱讀
stc12c5a60s2_spi程序
單片機是STC12C5A60S2,用的是單片機的硬件SPI驅動的nRF24L01+,這個是從機(接收...
發表于 2017-10-20 18:08
?
310次閱讀
在SPI總線中常用的6N137和ADuM315x...
SPI即串行外圍設備接口,是一種高速的,全雙工,同步的通信總線,在強干擾環境中,或是高的性能要求下,...
發表于 2017-08-25 17:14
?
992次閱讀
教你LPC雙核套件固件庫SPI的用法
最近進度有點慢。現在把我SPI這部分分享下吧。這次我使用SPI0和I2C2這兩個模塊,I2C2負責采...
發表于 2017-08-25 15:58
?
238次閱讀
如何滿足復雜系統的高性能時序需求
時鐘設備設計使用 I2C 可編程小數鎖相環 (PLL),可滿足高性能時序需求,這樣可以產生零 PPM...
發表于 2017-08-23 17:39
?
234次閱讀
數字電位器串口設計與仿真
數字電位器是利用微電子技術制成的集成電路,它是依靠電阻陣列和多路模擬開關的組合完成阻值的變化。它沒有...
發表于 2017-06-30 09:42
?
283次閱讀
如何判斷芯片程序不正常的原因
最近有用戶反映一個非常蹊蹺的現象,在燒錄文件時,編程器全過程提示PASS,但是芯片貼板后產品無法正常...
發表于 2017-06-14 17:09
?
662次閱讀
SPI、I2C、UART三種串行總線協議的區別和...
SPI接口在Master控制下產生的從器件使能信號和時鐘信號,兩個雙向移位寄存器按位傳輸進行數據交換...
發表于 2017-05-08 14:40
?
9308次閱讀
在Linux環境下I2C總線EEPROM驅動程序...
I2C (Inter-Integrated Circuit1總線是一種由Philips公司開發的2線...
發表于 2017-04-27 15:30
?
621次閱讀
帶SPI接口、尺寸最小的1Mb FRAM器件誕生...
富士通半導體(上海)有限公司日前宣布,成功推出擁有1 Mb內存的FRAM產品---MB85RS1MT...
發表于 2017-03-28 17:52
?
483次閱讀
用示波器直接破解30種通信協議
數字示波器的發展極大的降低了低速總線調試的難度,無論是IIC、SPI還是CAN、LIN等,示波器都可...
發表于 2017-03-21 12:04
?
1305次閱讀
7000 芯片Linux下的SPI接口與驅動配置
本文將介紹如何利用Vivado和petalinux開發Zynq7000系列芯片的SPI外設接口。
發表于 2017-03-20 14:00
?
538次閱讀
教你的安卓系統DragonBoard 410c也...
內核的定制。首先我們需要對內核進行重新配置,從而添加我們的設備驅動,重新編譯內核,在96board官...
發表于 2017-03-01 10:47
?
405次閱讀
單片機SPI通信接口
SPI 是一種高速的、全雙工、同步通信總線,標準的 SPI 也僅僅使用 4 個引腳,常用于單片機和 ...
發表于 2016-12-26 15:46
?
2103次閱讀
聽說,電子工程師經常被“狗”咬!
匯總看門狗問題的解決辦法,希望能夠合理設計仿真、編程接口,以及合理設計應用程序,規避看門狗對編程、仿...
發表于 2016-09-08 09:56
?
620次閱讀
工程師很有必要了解的常用接口大全
接口就是一種間接手段,所以相比起直接溝通,會引致些額外負擔。在電子產品中有硬件接口和軟件接口之分:電...
發表于 2016-08-15 09:50
?
3909次閱讀
CAN、USART、SPI、SCI等常見總線技術...
隨著微電子技術和計算機技術的發展,總線技術也在不斷地發展和完善,而使計算機總線技術種類繁多,各具特色...
發表于 2016-07-08 14:46
?
3051次閱讀
工程師經驗分享:采用硬件I2C讀取E2PROM
在I2C主設備進行讀寫操作的過程中。主設備在開始信號后控制SCL產生8個時鐘脈沖,然后拉低SCL信號...
發表于 2016-06-16 17:06
?
2006次閱讀
帶你詳細解析串行外設接口(SPI)總線時序
SPI是一個環形總線結構,由ss(cs)、sck、sdi、sdo構成,其時序其實很簡單,主要是在sc...
發表于 2016-01-25 13:54
?
1976次閱讀
利用I2C通信接口實現測溫的設計方案
測溫功能是很多智能硬件設計都會用到的,本文介紹一種帶I2C通信接口的數字溫度傳感器SD5075來實現...
發表于 2015-10-13 13:51
?
1049次閱讀
高清視頻監控中的I2C總線云臺電機控制設計
社會的發展,汽車增量不斷增多,道路上各種違章的車輛也逐漸增多,為了構建一個平安交通和智能交通,視頻監...
發表于 2015-08-01 23:29
?
426次閱讀
使用光學鼠標傳感器實現旋轉測量
本設計實例使用光學電腦鼠標中的傳感器測量圓盤的旋轉,其中的圓盤可以通過機械方式連接到任何一種旋轉裝...
發表于 2015-07-30 16:33
?
1418次閱讀
最小尺寸USB Type-C解決方案
全球領先的高性能功率半導體解決方案供應商Fairchild今天發布了USB Type-C解決方案的...
發表于 2015-07-30 11:40
?
887次閱讀
如何通過一個差分接口來延長SPI總線
本文將介紹如何通過一個差分接口來延長串行外設接口 (SPI) 總線,而這可以應用在支持遠程溫度或壓力...
發表于 2015-04-24 11:27
?
2250次閱讀
I2C與串口通信模塊電子電路設計
OZ89采樣模塊將采集處理后的數據通過I2C總線發送到LF2407,由于LF2407自身不帶I2C ...
發表于 2014-09-17 13:42
?
5148次閱讀
采用SMBus溫度傳感器IC實現風扇開關控制
在很多產品中,低或中速運行的風扇已足以散熱,同時允許保留最高速模式以應付最糟糕的情形。本文闡述的電路...
發表于 2014-07-10 17:25
?
623次閱讀
如何利用isoSPI數據鏈路實現高性能車載電池管...
通過整合行之有效的數據通信技術,isoSPI提供了一種穩健和簡單的標準SPI設備遠程控制法,而這在以...
發表于 2013-06-14 15:21
?
2075次閱讀
下一篇: PLC、DCS、FCS三大控
上一篇: 電氣控制線路圖控制原