i2cgo語(yǔ)言 i2c代碼的詳細(xì)講解

求教verilog i2c小程序

module?iic_func_module

成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),河間企業(yè)網(wǎng)站建設(shè),河間品牌網(wǎng)站建設(shè),網(wǎng)站定制,河間網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,河間網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

(

input?CLK,

?input?RSTn,

?

?input?[1:0]Start_Sig,

?input?[7:0]Addr_Sig,

?input?[7:0]WrData,

?output?[7:0]RdData,

?output?Done_Sig,

?

?output?SCL,

?inout?SDA,

?

?/***************/

?output?[4:0]SQ_i

?

);

/*************************/

?parameter?FREQ?=?9'd200;

?

?/*************************/

?

?reg?[4:0]i;

?reg?[4:0]Go;

reg?[8:0]C1;

?reg?[7:0]rData;

?reg?rSCL;

?reg?rSDA;

?reg?isAck;

reg?isDone;

reg?isOut; ?

?

?always?@?(?posedge?CLK?or?negedge?RSTn?)

?if(?!RSTn?)

??begin

?i?=?5'd0;

?Go?=?5'd0;

?C1?=?9'd0;

?rData?=?8'd0;

?rSCL?=?1'b1;

?rSDA?=?1'b1;

?isAck?=?1'b1;

?isDone?=?1'b0;

?isOut?=?1'b1;

end

??else?if(?Start_Sig[0]?)

??case(?i?)

0:?//?Start

?begin

??isOut?=?1;

?

??rSCL?=?1'b1;

??

??if(?C1?==?0?)?rSDA?=?1'b1;?

??else?if(?C1?==?100?)?rSDA?=?1'b0;??

??

??if(?C1?==?FREQ?-1)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end

??

?1:?//?Write?Device?Addr

?begin?rData?=?{4'b1010,?3'b000,?1'b0};?i?=?5'd7;?Go?=?i?+?1'b1;?end

?

?2:?//?Wirte?Word?Addr

?begin?rData?=?Addr_Sig;?i?=?5'd7;?Go?=?i?+?1'b1;?end

?3:?//?Write?Data

?begin?rData?=?WrData;?i?=?5'd7;?Go?=?i?+?1'b1;?end

?

?/*************************/

?

?4:?//?Stop

?begin

??isOut?=?1'b1;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?50?)?rSCL?=?1'b1;?

??

??if(?C1?==?0?)?rSDA?=?1'b0;

??else?if(?C1?==?150?)?rSDA?=?1'b1;

? ??

??if(?C1?==?50?+?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;?

?end

?

?5:

?begin?isDone?=?1'b1;?i?=?i?+?1'b1;?end

?

?6:?

?begin?isDone?=?1'b0;?i?=?5'd0;?end

?

?/*******************************/?//function

?

?7,8,9,10,11,12,13,14:

?begin

??isOut?=?1'b1;

??rSDA?=?rData[14-i];

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;?

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end

?

?15:?//?waiting?for?acknowledge

?begin

??isOut?=?1'b0;

??if(?C1?==?150?)?isAck?=?SDA;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;?

?end

?

?16:

?if(?isAck?!=?0?)?i?=?5'd0;

?else?i?=?Go;?

?

?/*******************************/?//?end?function

endcase

??else?if(?Start_Sig[1]?)?

??case(?i?)

0:?//?Start

?begin

??isOut?=?1;

??

??rSCL?=?1'b1;

??

??if(?C1?==?0?)?rSDA?=?1'b1;?

??else?if(?C1?==?100?)?rSDA?=?1'b0;??

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end

??

?1:?//?Write?Device?Addr

?begin?rData?=?{4'b1010,?3'b000,?1'b0};?i?=?5'd9;?Go?=?i?+?1'b1;?end

?

?2:?//?Wirte?Word?Addr

?begin?rData?=?Addr_Sig;?i?=?5'd9;?Go?=?i?+?1'b1;?end

?3:?//?Start?again

?begin

??isOut?=?1'b1;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?50?)?rSCL?=?1'b1;

??else?if(?C1?==?250?)?rSCL?=?1'b0;

??

??if(?C1?==?0?)?rSDA?=?1'b0;?

??else?if(?C1?==?50?)?rSDA?=?1'b1;

??else?if(?C1?==?150?)?rSDA?=?1'b0;??

??

??if(?C1?==?300?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end

?

?4:?//?Write?Device?Addr?(?Read?)

?begin?rData?=?{4'b1010,?3'b000,?1'b1};?i?=?5'd9;?Go?=?i?+?1'b1;?end

?5:?//?Read?Data

?begin?rData?=?8'd0;?i?=?5'd19;?Go?=?i?+?1'b1;?end

?

?6:?//?Stop

?begin

??isOut?=?1'b1;

?

if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?50?)?rSCL?=?1'b1;?

??

??if(?C1?==?0?)?rSDA?=?1'b0;

??else?if(?C1?==?150?)?rSDA?=?1'b1; ? ??

??

??if(?C1?==?50?+?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;?

?end

?

?7:

?begin?isDone?=?1'b1;?i?=?i?+?1'b1;?end

?

?8:?

?begin?isDone?=?1'b0;?i?=?5'd0;?end

?

?/*******************************/?//function

?9,10,11,12,13,14,15,16:

?begin

??isOut?=?1'b1;

??

??rSDA?=?rData[16-i];

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;?

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end

???

?17:?//?waiting?for?acknowledge

?begin

??isOut?=?1'b0;

?

??if(?C1?==?150?)?isAck?=?SDA;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;?

?end

?

?18:

?if(?isAck?!=?0?)?i?=?5'd0;

?else?i?=?Go;

?

?/*****************************/

?

?19,20,21,22,23,24,25,26:?//?Read

?begin

?isOut?=?1'b0;

?if(?C1?==?150?)?rData[26-i]?=?SDA;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;?

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?i?+?1'b1;?end

??else?C1?=?C1?+?1'b1;

?end ??

?

?27:?//?no?acknowledge

?begin

?isOut?=?1'b1;

?//if(?C1?==?100?)?isAck?=?SDA;

??

??if(?C1?==?0?)?rSCL?=?1'b0;

??else?if(?C1?==?100?)?rSCL?=?1'b1;

??

??if(?C1?==?FREQ?-1?)?begin?C1?=?9'd0;?i?=?Go;?end

??else?C1?=?C1?+?1'b1;?

?end

?

?/*************************************/?//?end?fucntion

endcase

?/***************************************/

assign?Done_Sig?=?isDone;

?assign?RdData?=?rData;

?assign?SCL?=?rSCL;

?assign?SDA?=?isOut???rSDA?:?1'bz;?

/***************************************/

?

?assign?SQ_i?=?i;

?

?/******************************/

endmodule

當(dāng)下哪種語(yǔ)言更重要

面向底層,或高效率 用C:如單片機(jī), 操作系統(tǒng), 數(shù)據(jù)庫(kù)實(shí)現(xiàn)

面向上層應(yīng)用面向?qū)ο缶幊獭++ 高效率 : VC/ QT / GTK編程, 現(xiàn)在WPSlinux版是QT實(shí)現(xiàn)的

面向?qū)ο缶幊蘆AVA, Android, 網(wǎng)頁(yè)腳本, 也能編寫PC機(jī)應(yīng)用比如freemind, 也有嵌入式方面的應(yīng)用.

再就是網(wǎng)絡(luò)動(dòng)態(tài)語(yǔ)言, jsp/php/asp , jsp一般用于大型網(wǎng)站, php是開(kāi)源較多,主要一般網(wǎng)站規(guī)模不大的在用, asp 好像不溫不火,

比較流行的:go python 還要懂shell腳本編程,

面向硬件的有: VHDL/verilog

matlab:算法仿真

無(wú)論選哪種語(yǔ)言,商業(yè)開(kāi)發(fā)基本上都會(huì)涉及到數(shù)據(jù)庫(kù), db2、oracle mysql好像比較出名

小型數(shù)據(jù)庫(kù)sqlite,Android 就是用的這個(gè)

總之, 各有各的用處, 看你對(duì)哪方面感興趣, 要學(xué)的有很多.

我是學(xué)嵌入式的,看一下我收集的嵌入式方面需要掌握的知識(shí)與技能:

=================================================================

Altium Designer 原理圖和PCB制作

STM32處理器

需求分析、設(shè)計(jì)方案

嵌入式軟硬件系統(tǒng)的設(shè)計(jì)、測(cè)試;

技術(shù)文檔;

生產(chǎn)工藝技術(shù)支持。

-------------------------------------------------------------------

Linux平臺(tái)下進(jìn)行軟件開(kāi)發(fā)

音視頻編解碼SDK的進(jìn)行封裝

音視頻流存儲(chǔ)、傳輸模塊,設(shè)計(jì)、實(shí)現(xiàn)、優(yōu)化及測(cè)試

編寫相關(guān)開(kāi)發(fā)文檔、技術(shù)支持文檔、使用說(shuō)明

=====

C/C++ 良好的編程習(xí)慣與文檔規(guī)范;

Linux 下進(jìn)程間通信及內(nèi)存管理機(jī)制

熟悉H.264,G.7xx,AMR,AAC等音視頻編碼

熟悉MP4,avi等文件格式

熟悉rtsp/rtp、rtmp、http

海思或者amberalla平臺(tái)

通和協(xié)調(diào)能力

----------------------------------------------------------------------------

熟悉1種以上數(shù)據(jù)庫(kù)

--------------------------------------------------------------

機(jī)器人開(kāi)發(fā)經(jīng)歷或參加機(jī)器人相關(guān)研究

熟悉Android framework,以及Linux驅(qū)動(dòng)開(kāi)發(fā),調(diào)試,有QT程經(jīng)驗(yàn)

熟練閱讀電路原理圖,以及PCB layout;

有效地對(duì)新人或普通開(kāi)發(fā)工程師進(jìn)行輔導(dǎo)

---------------------------------------------------------------------------

悉嵌入式環(huán)境下的 C/C++ 語(yǔ)言程序設(shè)計(jì)和匯編語(yǔ)言程序設(shè)計(jì)

精通個(gè)域網(wǎng)通信協(xié)議,如無(wú)線網(wǎng)絡(luò)(Wi-Fi、BlueTooth、Zigbee等)等協(xié)議,具有智能家居產(chǎn)品相關(guān)經(jīng)驗(yàn)

RM環(huán)境下的系統(tǒng)開(kāi)發(fā)環(huán)境與工具,包括平臺(tái)移植、驅(qū)動(dòng)開(kāi)發(fā)及調(diào)試,等等;

數(shù)字電路模擬電路基礎(chǔ),熟悉uCOS,Linux,RThread,FreeRTOS等嵌入式操作系統(tǒng)內(nèi)核程序設(shè)計(jì)

深入掌握一種或幾種嵌入式處理器系統(tǒng)(熟悉Arm、X86、PPC、MIPS)

---------------------------------------------------------------------------

WIFI模塊

----------------------------------------

懂日語(yǔ)、32歲以下

-------------------------------------------------------------------------------------

bootloader、內(nèi)核板級(jí)移植、集成。

海思或者amberalla平臺(tái)開(kāi)發(fā)經(jīng)驗(yàn)

外設(shè)接口和通信協(xié)議,包括USB,CAN,LIN,TCP/IP等多種汽車和工業(yè)總線技術(shù)

無(wú)線通訊模塊、藍(lán)牙、GPRS、有線及無(wú)線通訊

物聯(lián)網(wǎng)電子消費(fèi)品產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)

電氣電子產(chǎn)品開(kāi)發(fā)和項(xiàng)目管理經(jīng)驗(yàn)

--------------------------------------------------------------------------------------

精通如下串行總線協(xié)議:USB/I2C/SPI/I2S/UART

悉Boot Loader,

具有Linux BSP經(jīng)驗(yàn)者

具備良好溝通、協(xié)作、學(xué)習(xí)能力,能夠主動(dòng)在項(xiàng)目中承擔(dān)起責(zé)任

寫和移植內(nèi)核設(shè)備驅(qū)動(dòng)

裁剪和優(yōu)化的Linux內(nèi)核

----------------------------------------------------------------------------------

團(tuán)隊(duì)管理經(jīng)驗(yàn)

硬件基本原理,能看懂原理圖和PCB

精通linux內(nèi)核架構(gòu),熟悉多線程編程

精通多種常用傳輸總線協(xié)議,如IIC、SPI、CAN、IIS;

對(duì)無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸有較深了解;使用過(guò)無(wú)線傳輸模塊,GPRS、3G等

WIFI驅(qū)動(dòng)、WIFI應(yīng)用、藍(lán)牙驅(qū)動(dòng)、藍(lán)牙應(yīng)用有較深的了解

對(duì)USB驅(qū)動(dòng)有較深了解,做過(guò)USB設(shè)備驅(qū)動(dòng)、對(duì)SD卡和TF卡

車載電子設(shè)備

熟悉視頻、音頻處理,熟悉視頻、音頻編解碼處理;

熟悉安卓架構(gòu),能編寫安卓中間件

ARM或DSP嵌入式軟件開(kāi)發(fā)經(jīng)驗(yàn)

-----------------------------------------------------------------------------------------------

入式Linux系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì),系統(tǒng)內(nèi)核維護(hù);

根據(jù)需求制定系統(tǒng)整體軟件方案,劃分軟件模塊;

優(yōu)化uboot、Linux內(nèi)核相關(guān)模塊;

深入了解ARM(Cortex-A8以上)體系結(jié)構(gòu)

常用驅(qū)動(dòng)程序及相關(guān)協(xié)議,如:Framebuffer、以太網(wǎng)、USB、CAN總線、I2C、SPI等??梢詫?duì)驅(qū)動(dòng)程序進(jìn)行深度的優(yōu)化;

對(duì)視頻/圖像有較深刻認(rèn)識(shí),了解視頻/圖像編解碼相關(guān)知識(shí);

使用OPenGL完成圖像渲染;

負(fù)責(zé)研究和開(kāi)發(fā)3D引擎到Opengl的標(biāo)準(zhǔn)化接口;

深入理解QT底層實(shí)現(xiàn)機(jī)制。熟悉QT在不同平臺(tái)之間的移植;

Ti/Freescale ARM開(kāi)發(fā)經(jīng)驗(yàn)

認(rèn)真對(duì)待每一項(xiàng)工作,同事之間團(tuán)結(jié)互助;

良好的英文交流能力

--------------------------------------------------------------------------------------------

熟悉wifi,nrf2401,camera,audio 等外圍模組及相關(guān)協(xié)議

熟悉ucos—2

智能家居方面的實(shí)際開(kāi)發(fā)經(jīng)驗(yàn)

----------------------------------------------------------------------------------

單片機(jī)、ARM、Cotrex-M3/M4等處理器

掌握網(wǎng)絡(luò)、UART、LCD、SPI、I2C、RS485

搭建嵌入式Linux軟硬件系統(tǒng)

熟悉Linux內(nèi)核機(jī)制

熟練完成嵌入式下linux的驅(qū)動(dòng)開(kāi)發(fā)與應(yīng)用開(kāi)發(fā)。

熟悉TCP/IP協(xié)議棧,Socket通信編程

熟悉HTTP、SNMP、DHCP等應(yīng)用層協(xié)議。

CAN總線、WIFI、Zigbee等相關(guān)產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)

良好的語(yǔ)言表達(dá)溝通能力和團(tuán)隊(duì)合作精神

------------------------------------------------------------------------------------

broad expertise

-----------------------------------------------------------------------------------------

具有l(wèi)inux,freeRTOS等主流嵌入式系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)

熟悉TCP/IP、WIFI、藍(lán)牙BLE、I2C等協(xié)議

有音頻、Andorid開(kāi)發(fā)、Java虛擬機(jī)、云端數(shù)據(jù)同步、智能家居產(chǎn)品等開(kāi)發(fā)經(jīng)驗(yàn)

嵌入軟件, 驅(qū)動(dòng),協(xié)議棧,協(xié)議開(kāi)發(fā)經(jīng)驗(yàn)

精通TCP/IP協(xié)議

用網(wǎng)絡(luò)協(xié)議,了解防火墻, 路由交換技術(shù)

無(wú)線協(xié)議802.11,802.1X

熟悉Wi-Fi、ZigBee、藍(lán)牙,模擬信號(hào)、UART、RS232、RS485、各種現(xiàn)場(chǎng)總線、HART-IP、TCP/IP、OPC、OPC UA、BACNet等協(xié)議

立志于一起打造互聯(lián)網(wǎng)+工業(yè)。

---------------------------------------------------------------------------------------------

熟悉8583、EMV、PBOC等相關(guān)行業(yè)知識(shí)

3年以上 嵌入式 Linux 驅(qū)動(dòng)開(kāi)發(fā)經(jīng)驗(yàn)

讀懂硬件圖紙

熟練掌握 i2c、i2s、spi、gpio、uart、usb、lcd/framebuffer 等常用 Linux 驅(qū)動(dòng)

Linux 中斷程序開(kāi)發(fā);

電機(jī)控制驅(qū)動(dòng)、Linux系統(tǒng)管理、系統(tǒng)版本升級(jí) 等開(kāi)發(fā)經(jīng)驗(yàn)

---------------------------------------------------------------------------------------------

雷達(dá)、超聲項(xiàng)目相關(guān)的研發(fā)

扎實(shí)全面的硬件電路設(shè)計(jì)、調(diào)試能力,熟悉模擬、數(shù)字及混合電路;

擁有DSP(TI TMS系列為佳),ARM, FPGA/CPLD 設(shè)計(jì)經(jīng)驗(yàn);

解決并優(yōu)化整體系統(tǒng)的信噪比、電磁屏蔽、能耗管理和熱耗散管理

熟悉PCB 布線,制版和調(diào)試

有擔(dān)任規(guī)模量產(chǎn)項(xiàng)目技術(shù)研發(fā)經(jīng)歷

掌握交叉編譯環(huán)境、熟練典型Linux系統(tǒng)調(diào)用和應(yīng)用程序開(kāi)發(fā)

熟練掌握至少一種版本管理工具(如:SVN、GIT等);

對(duì)Linux系統(tǒng)內(nèi)核及驅(qū)動(dòng)程序有深入理解

對(duì)Linux內(nèi)核進(jìn)行深度定制和修改

------------------------------------------------------------------------------------------------

熟悉uC/OS下Camera,LCD、WIFI、RIL、IIC、SPI、UART、2G、各類型Sensor等各種外設(shè)驅(qū)動(dòng)驅(qū)動(dòng)模型

做過(guò)傳統(tǒng)單片機(jī) pos 機(jī) 或類似stm32 pos機(jī)項(xiàng)目經(jīng)驗(yàn)

熟悉PBOC協(xié)議

能夠使用示波器和邏輯分析儀等

--------------------------------------------------------------------

C/C++ 網(wǎng)絡(luò)及多線程編程

熟悉OpenWrt開(kāi)發(fā),移植

悉Qualcomm SDK者優(yōu)先,有一定的算法基礎(chǔ),

----------------------------------------------------------------

用有電子工具軟件PROTEL\PADS等

網(wǎng)關(guān)產(chǎn)品,協(xié)議轉(zhuǎn)換類產(chǎn)品編程經(jīng)驗(yàn)

精通TCP/IP,ZIGBEE,MQTT協(xié)議,了解至少一種工業(yè)總線;

能獨(dú)立承擔(dān)產(chǎn)品的設(shè)計(jì)規(guī)劃,周邊接口硬件電路設(shè)計(jì),功能軟件設(shè)計(jì);

---------------------------------------------------------------------

熟悉C/C++/JAVA/J2ME語(yǔ)言編程

入式Linux操作系統(tǒng),Linux驅(qū)動(dòng)開(kāi)發(fā)

精通Android開(kāi)發(fā)平臺(tái)及Framework框架原理

熟悉基本無(wú)線協(xié)議;

責(zé)任心和進(jìn)取心

團(tuán)隊(duì)協(xié)作

善于溝通和表達(dá)

獨(dú)立設(shè)計(jì)優(yōu)化和移植HAL層外設(shè)模塊,如Camera、WiFi、藍(lán)牙、觸摸屏等模塊;

將Android系統(tǒng)移植到特定硬件平臺(tái)上

給上層app及UI開(kāi)發(fā)提供支持

--------------------------------------------------------------------------

移植和底層驅(qū)動(dòng)

熟悉Linux內(nèi)核架構(gòu);

Makefile、shell等腳本語(yǔ)言

熟悉RTP,RTCP,RTSP等流媒體協(xié)議

熟練使用Ethereal、Wireshark和Tcpdump等網(wǎng)絡(luò)協(xié)議分析工具;

DVR、MDVR、DVS等監(jiān)控產(chǎn)品開(kāi)發(fā)經(jīng)驗(yàn)

-------------------------------------------------------------------------

產(chǎn)品的規(guī)劃設(shè)計(jì)、安卓等平臺(tái)的底層驅(qū)動(dòng)程序編寫調(diào)試

主板調(diào)試及外設(shè)調(diào)試,確保項(xiàng)目中驅(qū)動(dòng)部分的質(zhì)量和進(jìn)度

獨(dú)立完成各業(yè)務(wù)模塊的驅(qū)動(dòng)開(kāi)發(fā)工作以及技術(shù)難題攻關(guān)、技術(shù)評(píng)估;

模塊的需求分析、詳細(xì)設(shè)計(jì)、編碼實(shí)現(xiàn)、和單元自測(cè),參與產(chǎn)品需求分析并制定技術(shù)實(shí)施方案,根據(jù)產(chǎn)品功能需求設(shè)計(jì)并完成軟件實(shí)現(xiàn),了解項(xiàng)目需求和業(yè)務(wù)流程。

2年以上單片機(jī)系統(tǒng)軟件開(kāi)發(fā)經(jīng)驗(yàn),2年以上的Android系統(tǒng)軟件驅(qū)動(dòng)開(kāi)發(fā)經(jīng)驗(yàn)(有成熟產(chǎn)品移植開(kāi)發(fā)經(jīng)驗(yàn)),有WINCE平臺(tái)開(kāi)發(fā)經(jīng)驗(yàn)更佳;

uboot、kenel Driver開(kāi)發(fā)以及HAL層等開(kāi)發(fā)、調(diào)試和集成工作

熟悉ARM系列處理器架構(gòu),包括簡(jiǎn)單的ARM處理器(Cortex-M3/M0)和復(fù)雜的多核ARM處理器的應(yīng)用設(shè)計(jì)經(jīng)驗(yàn);

無(wú)線網(wǎng)絡(luò)數(shù)據(jù)傳輸有較深了解;使用過(guò)無(wú)線傳輸模塊,GPRS、3G等;

對(duì)USB驅(qū)動(dòng)有較深了解,做過(guò)USB設(shè)備驅(qū)動(dòng)、對(duì)SD卡和TF卡等實(shí)際應(yīng)用上有獨(dú)到的心得體會(huì)或做過(guò)車載電子設(shè)備

夠獨(dú)立解決各類底層疑難問(wèn)題,能夠同硬件和軟件應(yīng)用工程師一起合作解決復(fù)雜問(wèn)題;

責(zé)任心,主動(dòng)學(xué)習(xí),團(tuán)隊(duì)溝通協(xié)作,文檔輸出, 英語(yǔ)讀寫

---------------------------------------------------------------------------------

精通Wifi協(xié)議及應(yīng)用開(kāi)發(fā),熟悉博通與MTK系列wifi芯片;

熟悉TCPIP協(xié)議,熟悉HTTP、FTP等網(wǎng)絡(luò)協(xié)議應(yīng)用和開(kāi)發(fā)

熟悉Wifi、射頻產(chǎn)品的生產(chǎn)和測(cè)試

必須有broadcom、Atheros或MTK的一種wifi方案經(jīng)驗(yàn)

自我驅(qū)動(dòng)的學(xué)習(xí)和工作習(xí)慣

對(duì)未知技術(shù)和領(lǐng)域能快速掌握并實(shí)踐

溝通、協(xié)調(diào), 項(xiàng)目管理、團(tuán)隊(duì)管理

---------------------------------------------------------------------------------------

Socket編程,多線程編程,進(jìn)程間通信

熟悉TCP/IP協(xié)議;熟悉HTTP,UDP/RTP/RTCP/RTS等流媒體傳輸與控制協(xié)議;

熟悉音視頻壓縮技術(shù)

------------------------------------------------------------

悉實(shí)時(shí)操作系統(tǒng)如ThreadX,FreeRTOS

熟悉串口,TCPIP協(xié)議,WIFI,GPIO,JTAG等底層編程

家電無(wú)線模塊軟件開(kāi)發(fā)

不同硬件平臺(tái)選型開(kāi)發(fā)

撰寫并維護(hù)相關(guān)技術(shù)文檔

-----------------------------------------------------------------------

通32 bit ARM單片機(jī)系統(tǒng)開(kāi)發(fā),熟悉Atmel芯片

精通uCOSII系統(tǒng),有相關(guān)開(kāi)發(fā)經(jīng)驗(yàn)

OS(uCOSII與Linux)移植、驅(qū)動(dòng)編寫與應(yīng)用軟件開(kāi)發(fā)

------------------------------------------------------------------------

主流單片機(jī)、ARM、FPGA硬件平臺(tái)

熟悉VHDL/Verilog語(yǔ)言進(jìn)行FPGA開(kāi)發(fā);

有效實(shí)現(xiàn)板級(jí)系統(tǒng)間數(shù)據(jù)通訊,

了解衛(wèi)星通訊協(xié)議

熟悉使用LabView進(jìn)行數(shù)據(jù)采集和系統(tǒng)測(cè)試

獨(dú)立進(jìn)行PCB開(kāi)發(fā)并聯(lián)系相關(guān)廠家進(jìn)行生產(chǎn)

熟悉中國(guó)電子信息產(chǎn)業(yè)鏈,不僅懂得怎樣設(shè)計(jì), 還要知道怎樣利用現(xiàn)有市場(chǎng)產(chǎn)品, 經(jīng)濟(jì)快速有效地實(shí)現(xiàn)自己的設(shè)計(jì)

了解電子產(chǎn)品國(guó)際市場(chǎng), 能夠從市場(chǎng)角度去開(kāi)發(fā)產(chǎn)品;

英語(yǔ)能力可以應(yīng)付國(guó)際化工作環(huán)境, 能夠熟練使用法語(yǔ)德語(yǔ)更好。

在本專業(yè)領(lǐng)域內(nèi)有豐富人脈,能夠在全世界范圍內(nèi)為具體問(wèn)題找到合適的人;

i2c中,“master mode 、slave mode”是什么意思?

master mode? ?主機(jī)模式? (下面例子中老大的模式)

slave mode? ? ?從機(jī)模式? ?(下面例子中小混混的模式)

master or slave transmit mode? 主機(jī)或者從機(jī)? 發(fā)送模式

master or slave receive mode? 主機(jī)或者從機(jī)? 接受模式

i2c是一個(gè)傳輸?shù)膮f(xié)議,可以通過(guò)協(xié)議來(lái)傳遞數(shù)據(jù),需要有SCL時(shí)鐘線和SDA數(shù)據(jù)線

主機(jī)就像老大,控制時(shí)鐘線,從機(jī)就像小混混,小混混可以有1個(gè)或者多個(gè) 每個(gè)有固定的編號(hào)

也就是地址,老大如果要叫小混混打一個(gè)人,先發(fā)送小混混的編號(hào)(地址),小混混確認(rèn)后,老

大再發(fā)打人的資料(數(shù)據(jù)),然后小混混得到數(shù)據(jù) ,去執(zhí)行,這就是主機(jī)模式!

英語(yǔ)(English)是印歐語(yǔ)系-日耳曼語(yǔ)族下的語(yǔ)言,由26個(gè)字母組合而成,英文字母淵源于拉丁字母,拉丁字母淵源于希臘字母,而希臘字母則是由腓尼基字母演變而來(lái)的。英語(yǔ)是國(guó)際指定的官方語(yǔ)言(作為母語(yǔ)),也是世界上最廣泛的第一語(yǔ)言,英語(yǔ)包含約49萬(wàn)詞,外加技術(shù)名詞約30萬(wàn)個(gè),是詞匯最多的語(yǔ)言,也是歐盟以及許多國(guó)際組織以及英聯(lián)邦國(guó)家的官方語(yǔ)言,擁有世界第三位的母語(yǔ)使用者人數(shù),僅次于漢語(yǔ)和西班牙語(yǔ)母語(yǔ)使用者人數(shù)。

英語(yǔ)由古代從丹麥等斯堪的納維亞半島以及德國(guó)、荷蘭及周邊移民至不列顛群島的盎格魯、撒克遜以及朱特部落的白人所說(shuō)的語(yǔ)言演變而來(lái),并通過(guò)英國(guó)的殖民活動(dòng)傳播到了世界各地。由于在歷史上曾和多種民族語(yǔ)言接觸,它的詞匯從一元變?yōu)槎嘣?,語(yǔ)法從“多屈折”變?yōu)椤吧偾邸?,語(yǔ)音也發(fā)生了規(guī)律性的變化。在19至20世紀(jì),英國(guó)以及美國(guó)在文化、經(jīng)濟(jì)、軍事、政治和科學(xué)在世界上的領(lǐng)先地位使得英語(yǔ)成為一種國(guó)際語(yǔ)言。如今,許多國(guó)際場(chǎng)合都使用英語(yǔ)做為溝通媒介。

英語(yǔ)也是與電腦聯(lián)系最密切的語(yǔ)言,大多數(shù)編程語(yǔ)言都與英語(yǔ)有聯(lián)系,而且隨著網(wǎng)絡(luò)的使用,英文的使用更普及。英語(yǔ)是聯(lián)合國(guó)的工作語(yǔ)言之一。 蘇格蘭語(yǔ)、低地撒克遜語(yǔ)、丹麥語(yǔ)、德語(yǔ)、荷蘭語(yǔ)、南非荷蘭語(yǔ)和英語(yǔ)也很接近。擁有法國(guó)血統(tǒng)的諾曼人于11世紀(jì)征服英格蘭王國(guó),帶來(lái)數(shù)萬(wàn)法語(yǔ)詞匯和拉丁語(yǔ)詞匯,很大程度地豐富了英語(yǔ)詞匯外,相對(duì)也驅(qū)使不少原生的語(yǔ)匯作廢。

怎么從I2C總線讀數(shù)據(jù)

i2c有其協(xié)議的,我當(dāng)時(shí)從不會(huì)到掌握其協(xié)議用了一陣子,就是狂讀協(xié)議和例程

我把當(dāng)時(shí)用非斯卡爾單片機(jī)讀i2c mems傳感器的歷程寫在下面

#include hidef.h

#include "derivative.h"

#define IIC_SDA_CTL PTCDD_PTCDD1

#define IIC_SDA_DAT PTCD_PTCD1

#define IIC_SCL_CTL PTCDD_PTCDD0

#define IIC_SCL_DAT PTCD_PTCD0

#define IIC_MST_HI 0

#define IIC_MST_LO 1

void IIC_Start(void);

void IIC_Restart(void);

void IIC_Stop(void);

byte IIC_SendByte(byte);

byte IIC_Read(byte *, byte);

byte IIC_Write(byte *, byte);

void IIC_Delay(void);

void IIC_Delay(void)

{

byte i;

for (i=0;i8;i++) {}

}

//==============================================================

// Master generates a START condition on IIC bus

//==============================================================

void IIC_Start(void)

{

IIC_SDA_CTL = IIC_MST_HI;

IIC_SCL_CTL = IIC_MST_HI;

IIC_Delay();

IIC_SDA_CTL = IIC_MST_LO;

IIC_SDA_DAT = 0;

IIC_Delay();

IIC_SCL_CTL = IIC_MST_LO;

IIC_SCL_DAT = 0;

IIC_Delay();

}

//==============================================================

// Master generates a RESTART condition on IIC bus

//==============================================================

void IIC_Restart(void)

{

IIC_SDA_CTL = IIC_MST_HI; //SDA back to high while SCL remain in low

IIC_Delay();

IIC_SCL_CTL = IIC_MST_HI; //SCL back to high, bus idle now

IIC_Delay();

IIC_SDA_CTL = IIC_MST_LO; //RESTART condition occur

IIC_Delay();

IIC_SCL_CTL = IIC_MST_LO; //SCL to low for standby

IIC_Delay();

}

//==============================================================

// Master generates a STOP condition on IIC bus

//==============================================================

void IIC_Stop(void)

{

IIC_SDA_CTL = IIC_MST_LO; //make sure SDA is low

IIC_Delay();

IIC_SCL_CTL = IIC_MST_HI; //I2C_SCL_CTL go to high first

IIC_Delay();

IIC_SDA_CTL = IIC_MST_HI; //I2C_SDA_CTL have low-high transition while SCL is high

IIC_Delay();

}

//==============================================================

// Master send out a byte of data and return with ACK/NACK

// return with 0x00 if ACK received

// return with 0xff if NACK received

//==============================================================

byte IIC_SendByte(byte outDat)

{

byte bit;

//send out 8-bit data

for (bit=0;bit8;bit++) {

if (outDat0x80)

IIC_SDA_CTL = IIC_MST_HI;

else

IIC_SDA_CTL = IIC_MST_LO;

IIC_Delay();

IIC_SCL_CTL = IIC_MST_HI;

IIC_Delay();

IIC_SCL_CTL = IIC_MST_LO;

outDat = 1;

}

//check for the ACK/NACK

IIC_SDA_CTL = IIC_MST_HI; //master release SDA

IIC_Delay();

IIC_SCL_CTL = IIC_MST_HI; //master send a clock

IIC_Delay();

if (IIC_SDA_DAT) bit = 0xff; //NACK

else bit = 0; //ACK

IIC_SCL_CTL = IIC_MST_LO;

IIC_Delay();

return(bit);

}

//==============================================================

// Master write a string of bytes through IIC us

// Return with 0x00 if successful

// Return with 0xff if failed

//==============================================================

byte IIC_Write(byte *buff, byte total)

{

while (total) {

if (IIC_SendByte(*buff++)) //get NACK after data byte out

return(0xff); //abort

total--;

//__RESET_WATCHDOG(); //needed only for EEPROM byte-program

}

return(0);

}

//==============================================================

// Master read a byte of data and set ACK/NACK

// return with data read

//==============================================================

byte IIC_ReadByte(byte ackFlag)

{

byte bit, dat;

IIC_SDA_CTL = IIC_MST_HI; //make sure master release SDA

//read 8 bits sof data

for (bit=0;bit8;bit++) {

dat = 1;

IIC_SCL_CTL = IIC_MST_HI;

IIC_Delay();

if (IIC_SDA_DAT) //read back data

dat |= 0x01;

IIC_SCL_CTL = IIC_MST_LO;

IIC_Delay();

}

//echo with ACK/NACK

if (ackFlag==0)

IIC_SDA_CTL = IIC_MST_LO; //echo back ACK

else

IIC_SDA_CTL = IIC_MST_HI; //echo back NACK

IIC_Delay();

IIC_SCL_CTL = IIC_MST_HI;

IIC_Delay();

IIC_SCL_CTL = IIC_MST_LO;

IIC_Delay();

return(dat);

}

//==============================================================

// Master read a string of data bytes through IIC us

//==============================================================

byte IIC_Read(byte *buff, byte total)

{

byte count;

if (total==0) return(0);

if (total==1) { //read one byte only

buff[0] = IIC_ReadByte(1); //NACK after read

return(1);

}

else { //read more than one bytes

count = 0;

while(total1) {

IIC_Delay();

buff[count++] = IIC_ReadByte(0); //ACK after read

total--;

__RESET_WATCHDOG();

}

IIC_Delay();

buff[count++] = IIC_ReadByte(1);

return(count);

}

}

然后你去網(wǎng)上搜索iic總線協(xié)議,把協(xié)議多讀幾遍慢慢就會(huì)了~~要不你把郵箱給我我發(fā)給你.總之很簡(jiǎn)單的 不用害怕,學(xué)學(xué)就會(huì)了

文章標(biāo)題:i2cgo語(yǔ)言 i2c代碼的詳細(xì)講解
網(wǎng)站網(wǎng)址:http://bm7419.com/article30/dohjpso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、企業(yè)建站、小程序開(kāi)發(fā)Google、軟件開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司