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
面向底層,或高效率 用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)題找到合適的人;
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有其協(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)