使用I2C读取AT24C02数据,写入数据逻辑波形不正确? - 问答 - 电子技术论坛 - 最好最受欢迎电子论坛!

使用I2C读取AT24C02数据,写入数据逻辑波形不正确?

许华 ( 楼主 ) 2017-4-26 09:39:41  只看该作者 倒序浏览
使用SDK自带的I2C去读取AT24C02过程中,使用逻辑分析仪看波形写入的数据与逻辑波形不对,写入0x55,波形显示不是写入值。谁知道怎么处理请帮忙看看我写错了吗?
$ g5 |5 Y+ U$ O' k% c

' p. j; s4 @( G9 o1 d& u- |//////////////////I2C部分/////////////////////////////
) |3 W4 D% A: U& `$ J% Q0 A' T/**5 v# [; o- [# b. c7 m2 l
******************************************************************************' i/ N0 N/ F* L! {8 c  ^
* @file    apds9930.c
+ |9 `+ b3 N' c3 R  W0 i5 y2 s * @author  William Xu2 V$ h4 a2 a: q
* @version V1.0.0
2 Q7 t7 B. [/ w# j4 v! b) z * @date    17-Mar-2015% I/ ~! J' Z: p) J
* @brief   apds9930 user controller operation, C0 Z9 r, M, Y1 e- a9 Q6 Z" @% {
******************************************************************************5 `6 H/ V0 ]1 Z& I. h" m
*  UNPUBLISHED PROPRIETARY SOURCE CODE% r/ g1 L& ], n5 ^8 u
*  Copyright (c) 2016 MXCHIP Inc.( }# k; ]: {9 t, p0 p+ b5 H
*
1 b0 Y+ q# j, y *  The contents of this file may not be disclosed to third parties, copied or
6 v1 n/ |! E0 r4 o- ~ *  duplicated in any form, in whole or in part, without the prior written
( W6 K, w: t6 Q# d *  permission of MXCHIP Corporation.
, _- U9 m2 m, g: D6 M! ~+ l ******************************************************************************" h9 o$ R) n5 w+ P
*/# j" ?- y. M" l

6 J( `9 b( n* o, g+ |
% p5 P  m4 S6 ?1 e2 I
#include "mico.h"
7 c' A) [3 Q: x* C/ I5 a2 ]#include "AT24CXX.h"
8 U9 x# z# p  @& C+ G2 h/ j0 p) h
# v1 I. _( Q& A# b

. ^; U+ f  r# X8 G) b5 a#define apds9930_log(M, ...) custom_log("APDS9930", M, ##__VA_ARGS__)
1 H1 \  X9 d3 j/ W; A( p8 N! D! c$ @" b/ _

2 J, w& `; o& G: U% n9 ^5 n/************** I2C/SPI buffer length ******/
: o( U+ \% C; f+ H9 @% E6 I#define        AT24CXX_BUFFER_LEN 3
3 z' ^, y' w/ s7 R" z' N) h) [3 K5 P#define AT24CXX_ID   0xA0
, v: r& {2 B( s1 |& N
' I5 p  _% F, D' I+ q/ ?
2 d/ g3 o6 ^+ |: E
/* I2C device */* Q4 D1 X5 q) a" P+ o
mico_i2c_device_t AT24CXX_i2c_device = {9 ^* M8 O& Z' I- H4 [$ }
  AT24CXX_I2C_DEVICE, AT24CXX_ID, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE/ \; `; @, G0 l! [+ Q0 v1 \& Y+ F
};
2 }4 ]7 r% Q3 ^! C+ umico_i2c_device_t AT24CXX_i2c_device0 = {
' O; M% V, {" F  m/ A' K3 z  AT24CXX_I2C_DEVICE, AT24CXX_ID+1, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE7 w! }7 _5 R  x* L$ p7 ?0 D
};! Z$ u3 H. ~: A& g3 t
/*************************************************
, Q6 O# K3 P. W0 c * Function:  AT24CXX_I2C写
# ]5 e! X0 b+ ]4 b: S$ {* parameter:  ! [! o2 K. Z$ y/ a( G" K  m; k
              uint8_t reg_addr          地址   
) z# P) j$ C& h# S              uint8_t *reg_data         参数; C0 [% W2 c/ A/ b4 _* o! i6 O
              uint8_t cnt               个数
5 N5 u: X7 y9 A8 Z7 o( q * Return  :  返回0- f2 a2 j- N6 W3 X
* Modify:
& d  Q. E+ m0 M- r0 H% x1 M% q3 N**************************************************/4 a% ~6 C* b& J/ [
OSStatus AT24CXX_I2C_bus_write(uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt)
1 M. l; C9 T2 C$ C, \{4 W% L+ Q+ x( o. e- j* a
  OSStatus err = kNoErr;
8 |2 I2 b; n' a' q0 C1 K- h  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
8 z( K% Q1 b' w) ^4 D. ?6 O* E* ~
& M8 D2 @, z; P( Q; @3 `- n
  m1 W, b" j% A2 U4 ?# @
  uint8_t array[AT24CXX_BUFFER_LEN];
( o* Q; G6 @1 L3 g7 z  uint8_t stringpos;
9 p% Z2 U  Y5 @3 Z  array[0] = reg_addr;4 X) g( I3 _$ F
  for (stringpos = 0; stringpos < cnt; stringpos++) {7 G! x* J! p' G7 K& |+ A+ C7 a1 [: b
          array[stringpos + 1] = *(reg_data + stringpos);
7 `- L9 R  k% S0 `$ F  }$ P0 p0 T' P6 v% w" l# d1 M4 l, P
& I4 B) t" D# u' E" L9 G3 D

! z. M+ [2 j5 Y8 X' o" h  err = MicoI2cBuildTxMessage(&apds_i2c_msg, array, cnt + 1, 3);
2 L5 s2 G2 d! T4 C9 k. R  require_noerr( err, exit );# P$ K8 H, J0 t" F) N: c& G
  err = MicoI2cTransfer(&AT24CXX_i2c_device, &apds_i2c_msg, 1);$ A+ A- E  p5 c9 k
  require_noerr( err, exit );. `/ @: u% M5 L9 |" u# P9 |' d
  4 ?+ B; `8 V, Q
exit:  
2 y+ E1 L1 A# h4 z5 G4 y4 @  return err;( f$ Z0 o" c7 X6 _8 c- R8 O0 ^5 L) ~
}
% V0 i; c6 ]9 ~% g% p- e/*************************************************, G5 S% a- J( u0 a' R( t
* Function:  AT24CXX_I2C读* H0 t2 z/ z' Z+ l& E% D( u
* parameter:  
- X0 L: W; s8 ^5 k" Y              uint8_t reg_addr          地址   
. X0 B4 Q/ W: t! S  A' U' a; Z5 r              uint8_t *reg_data         参数9 o/ s4 L8 u% V. a
              uint8_t cnt               个数$ c/ }: N6 ?6 l7 _( k1 _
* Return  :  返回01 f! R8 X: ~, B. r/ \  k
* Modify:
2 f- l! s! c/ c  y2 H4 Z% X**************************************************/0 x" T# F/ Y* d# Q! Z. h- j, P3 Y
OSStatus AT24CXX_I2C_bus_read(uint8_t *reg_data, uint8_t cnt)
. `, F5 u- [, X- R4 Q. u/ X- z* C9 l{
/ i+ p# u- }+ D7 L  OSStatus err = kNoErr;
3 I4 ], }1 c# e3 Q6 b  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};4 D+ k( v0 v% q  }% a1 }
/ S- c" }- l! e, F6 F3 r: K
( u  m# L& C/ S9 w/ T3 t7 w
  err = MicoI2cBuildRxMessage(&apds_i2c_msg, reg_data, cnt, 3);
! k* _; F; J% A  require_noerr( err, exit );
: ?' Q% I/ C( O% P* v. K3 l8 S- y  err = MicoI2cTransfer(&AT24CXX_i2c_device0, &apds_i2c_msg, 1);
( Q$ d# g2 L5 @" y( B" V% X  require_noerr( err, exit );) B5 _) J7 L, \/ r8 n
. W! F2 }- A, {  G$ x

8 n3 a& L6 q2 Rexit:( f% H1 w$ C  S6 `/ O5 w
  return err;3 C! Q: s" Z2 X2 C; L- ?! j
}
8 d- y+ i8 D; M- X9 j9 m. |+ D/*************************************************9 o' o6 B' s2 N3 Z
* Function:  AT24CXX_I2C写一个字节& P4 f7 A/ ^1 _' z- J& x
* parameter:    s8 ?% B) M, u' D' K! s
              uint8_t reg_addr          地址   
4 _0 p2 M9 w: Y) L2 m              uint8_t reg_data         参数' \) ~1 M' V9 l  L3 u7 g# o
* Return  :  返回0. K5 G0 ?" u$ K
* Modify:% r$ x) A9 O0 v- y6 K
**************************************************/( m* ^7 c& q+ f2 r: l: q. k
OSStatus AT24CXX_Write_RegData(uint8_t reg_addr, uint8_t reg_data)
4 t1 K* Z0 n5 F. s8 ^; Y" l{
- S3 g: t! z, V/ l% O OSStatus err = kNoErr;
1 I. o. |0 [# R1 O0 C err = AT24CXX_I2C_bus_write(reg_addr,®_data,1); , o( M. c3 ]+ \2 T
  return err;
* P/ M( u# S) j7 D) `}8 J) i9 ?8 x; w" f* t3 W
/*************************************************, C, I* m. k  r: D/ r# y
* Function:  AT24CXX_I2C读一个字节
0 w% l1 J* ?- `. f* n* parameter:  : F# v2 w; w3 z! N& M
              uint8_t reg_addr          地址   
6 |) E2 z/ L6 m* y/ z/ m              uint8_t *reg_data         参数
# X( }* A% k, }. e% C * Return  :  返回0) E2 ]- R* C. r6 h
* Modify:* m1 N# w! N# v2 t* V; k
**************************************************/
% E" x* L: }) OOSStatus AT24CXX_Read_RegData(uint8_t reg_addr, uint8_t *reg_data)4 c+ S* ^9 n, }+ G  z
{
- R- l7 ^9 o4 ^! D3 l4 G2 j  OSStatus err = kNoErr;1 b( ^7 L6 e- B" `  X( B0 t' k  \
  err = AT24CXX_I2C_bus_write(reg_addr, NULL, 0);$ |4 B! v' Z9 `. v+ _( A6 C5 v
  /*Should have delay time here*/
( x/ C5 G- {% u, I( Q  mico_thread_msleep(5);2 X7 U; O+ o  i- Q* O
  err = AT24CXX_I2C_bus_read(reg_data, 1);
+ l+ o4 `4 E+ J4 {" y4 L  return err;  
7 M$ G# ~) L8 S) o/ l/ K}
+ A9 Q' f9 J8 M& o9 G( F! ~3 }" K/*************************************************
5 L/ p! P1 p6 p# u0 h * Function:  AT24CXX_I2C读一个字节/ g  H+ H% w* {- F# P, B
* parameter:  
- a# ~0 A3 r4 T, g$ f              uint8_t reg_addr          地址   " `. J, F: |; n& K* v$ J
              uint8_t *reg_data         参数
0 N$ W& T. F# a * Return  :  返回08 }4 d; t( J/ u' r' S1 i' I, |
* Modify:2 x% U5 R7 s( m2 }( s
**************************************************/
  a' s& R0 j- y, Q% q//OSStatus AT24CXX_Read_one(uint8_t Write_addr,uint8_t Write_Data)
# S# T) V. f* \/ ~2 K1 k3 V//{
- V/ [8 [* j6 \$ p3 g//  OSStatus err = kNoErr;
1 E9 K9 @7 r3 G; r3 h//  err = AT24CXX_Write_RegData(Write_addr,Write_Data);
- n4 w1 \  E( e. J8 W" m2 ?1 A// return err;
- d. v6 ^* S+ Z8 B//}
$ R& e0 y  f/ V2 ^+ ^
4 a8 H4 }) G  ?

& P0 U" O) s; f/ P- ?, V# ~OSStatus AT24CXX_sensor_init(void)
, t; q! j& \$ q  M  N' p{" M/ ^* ]! l& B
  OSStatus err = kNoErr;
/ ^4 B- H  v2 T//  uint8_t device_id;
2 k! {' u0 U3 a8 w* k( t& v  
. J: p! o; y. N3 r3 G7 _9 y  MicoI2cFinalize(&AT24CXX_i2c_device);
% t- _1 V5 Q, Z5 A+ d8 `) e  
" B: h' b3 ^1 O0 @  /*int Si7021 sensor i2c device*/3 d1 x- Y, m/ B
  err = MicoI2cInitialize(&AT24CXX_i2c_device);
: o( X" `* {' M& A/ S* y  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cInitialize err = %d.", err) );8 g: }4 |( [' Z- m
  6 ?6 F2 J+ G) W9 \6 g
  if( false == MicoI2cProbeDevice(&AT24CXX_i2c_device, 5) ){" I" ^- i+ Y: I6 w+ F
    apds9930_log("Si7021_ERROR: no i2c device found!");
2 A) D4 V3 ]1 b7 E    err = kNotFoundErr;
9 Z' a! M/ C' x# p    goto exit;) q( i9 ?; E+ V6 f/ I  X
  }
& Y/ f& E) ~( y1 S, w8 J' {4 F        else) S! t- F4 Q0 v% G- _7 Z
        {
3 d% Q  c, |' w. \         apds9930_log("Catch I2C device!");7 V* f. {8 |# |' j% m
        ! q$ x0 c+ p) N( V3 t$ Q
        }  ( u; m8 I! v% X' L9 h4 R
exit:
: x5 g  I7 f3 c, N* d: K  return err;
5 Q, I) u: S* x2 _}! I/ H% [- l, Z7 s
4 J5 W/ p% D3 c
. w8 C9 p9 O7 Q8 ?

/ c; T, m* m0 q
! c1 ?7 B  L( P4 L& i+ j5 x, d
OSStatus AT24CXX_sensor_deinit(void)+ @: ~. R# P0 X, l8 y
{) ?# v8 t  A+ z- h
  OSStatus err = kUnknownErr;
4 |2 q; p8 x$ i& {' V1 i  3 r- U# G0 i! [& @
  err = MicoI2cFinalize(&AT24CXX_i2c_device);6 Y3 Y5 Z+ Y0 B) Y  P0 W1 \
  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cFinalize err = %d.", err));
$ T% e( I) h5 c( X+ ?5 J  h$ d) X  v  3 q" R( a' p5 {' |0 e
exit:+ V1 \% `) ^' ~
  return err;3 R* Z  W+ A& X) E5 P8 T
}% j# w3 N6 T7 z2 P3 D: i
//////////////调用部分/////////////////////////////: e* ^' y, e& v4 ]+ t8 v$ N  v- j- a
3 I7 ~" y& v0 ^% F, p
#include "mico.h"; R: p- x. T8 q; x
#include "micokit_ext.h"
  S, u- w4 V3 f* F3 m. V#include "json_c/json.h"9 ~7 q6 x% n0 T1 M) F' ?3 D& P
#include "sensor/DHT11/DHT11.h" /*温湿度传感器相关头文件*/8 M' t! Y( |: f( N" k# t
# q" S3 v# N0 O, `( T

* o2 c8 O, @& ?: H  W# l$ B#define wifi_station_log(M, ...) custom_log("WIFI", M, ##__VA_ARGS__)
: i0 W# d6 z; d- ^! a#define ext_rgb_led_log(M,...) custom_log("EXT", M, ##__VA_ARGS__)
" y5 S5 i& }. v#define COLOR_MODE RGB_MODE! q  ^& m0 ?5 \

  R" v9 [& s2 I7 x( S( F% k) Y  V, X
mico_thread_t t_handler = NULL;/*线程句柄*/
+ e3 ~' v! V, Q. {6 kmico_rtc_time_t cur_time = { 0 };
. M5 Z2 a' h( E- |1 X! K5 funsigned char APPD = 0,SDD=25;
, O: c" ^1 u6 Ptypedef struct$ a0 |( f0 T" ?' B$ q. ^, |5 p4 h& [* q
{
& x. Q  G+ I' w/ Y1 C4 U: l4 A/ r& G unsigned char Alarm_N;         //闹铃个数
- M# F1 ^% O6 K: P0 J# ?- ^ unsigned char Time_Alarm[3];7 p' p0 `' r: W, T' V, N
unsigned char WeekDays_DATA:3;8 Q' O5 }" W" X7 |1 M' i
// unsigned char . U) P7 r' c9 y/ n0 J% ~
}Time_Data;
. R( [  H0 v! ~) r8 Itypedef struct notify
* R& w) E1 z9 k1 H& V{7 r# s: W. j5 i6 m6 n- j4 h
  uint8_t cmd;
9 D3 d! E. \; K! J} notify;
, O0 X; P6 \4 X4 dTime_Data Time_Run;6 ~2 z% O# H- U) p- K& m
/ [! {$ ]3 c0 C% [  ?
static int isMqttThreadEnter = 0;0 N1 q; x9 O7 ^  a0 Q. \
/*************************************************0 d: h4 K# T- U0 l& _! W& w4 o
* Function:  2^N计算函数
# s# [; s* T0 w* x, r0 p! g * parameter( j# S) W, u( M4 _6 Y. A* E# t: g* m( O
* Return          sum计算的结果5 X. q$ {) ]& `7 }
* Modify:& e. w) `+ S  b7 ]& W7 k! d* [  b
**************************************************/, G1 N' d  t: }, N$ }
unsigned char Mult2(unsigned char n)
, r( {* ?$ K: r& W; n{" X  K( V& \( X" A6 N7 m6 u
  unsigned char sum = 2,m;" Y5 Z# D1 t$ V0 s) Z3 l% a1 Z1 K/ {0 l
  if(n==0) return 1;) A' X( d, f' h& y$ Q" \# e
  for(m=1;m ! Y! c/ t  n  z8 x# Z& L% v  return sum;9 m1 N( Z; B8 A$ s* x
}. ?0 h5 Q/ n' T% n/ ~4 F

( M* a/ `% U# w7 h* ]/*************************************************
/ Q8 F2 p3 C. a; a6 ^4 F; H+ t * Function:  RTC初始化函数& F, S  m8 q) S2 E, `
* parameter% s% R; h: Z+ [7 @9 |8 e# N
* Return! A" `# X: T- l) O2 J* U+ N
* Modify:, C5 M9 J  x  h! I0 Y+ ~* l
**************************************************/
% o) c" v5 i1 r- q# b# Kvoid RTC_Time_Init(void)
# ~  _; w9 U) T) n{1 |6 J( o  ^' ~
  cur_time.year = 17; //设置时间
$ ~& M4 l2 S- y; l6 F* [  cur_time.month = 3;
+ w1 p- m- G" \( t( x6 V  cur_time.date = 23;: o9 i! K; J/ X3 d+ a
  cur_time.weekday = 4;/ x  x9 H# l( `0 W' w2 p
  cur_time.hr = 23;' j0 m! t* e' v( h: [) Z* R7 y
  cur_time.min = 58;
9 J2 Q9 r' R8 W& l, p  cur_time.sec = 0;
7 E$ w4 M* @! C* ]/ Y+ ^" s6 V  Time_Run.WeekDays_DATA =cur_time.weekday;
- T& j/ z: e: n  o) u  MicoRtcSetTime(&cur_time);            //初始化 RTC 时钟的时间 ) K% c7 b9 k9 W
}
% C7 ~& W7 e: i/*************************************************+ l: s: k4 ]4 g4 T
* Function:  RTC时间允许读取函数1 E( N: l$ }1 s) ?
* parameter
9 ]3 v$ r# ?. t' I0 ?* F * Return" h0 q1 v" f/ B
* Modify:
# ^. C% p$ S5 Q) u**************************************************/
$ ?; _, u2 q4 R: i) W7 I" Xvoid RTC_Time_Run(unsigned int arg)
, n9 A1 |2 ]# s0 E4 ^2 j! k{
1 v1 `! l( D' |! }  RTC_Time_Init();- @9 ^8 d8 G0 S8 r" U6 @2 C
while(1): o/ r. G6 I" A+ U% S" `: s/ J& z$ a
{
% `; _9 n6 ?7 p; @- Q% {0 ~, n  MicoRtcGetTime(&cur_time); //返回新的时间值
/ h! p7 |/ K  ^0 p4 Y7 N" g  sleep(1000);
$ T, o. U/ j3 u. X" ^# K }1 S# j1 v6 j9 t9 E4 c3 h
}
8 e" l" N" _" m& n; J8 I' V: ?& o, @0 x- B' d

. Y; [3 Q5 t; E& [9 [& ~static void micoNotify_ConnectFailedHandler(OSStatus err, void* inContext)9 n% h# m! J0 S9 o* x: @. m
{* J- r* U1 q, n& F
  wifi_station_log("join Wlan failed Err: %d", err);, X$ u7 T! B3 C9 F& _# W2 U- W( A
}
2 `& Z8 g& ]  y! Z5 `8 a  y5 c
& t: H' V7 Y( _# R% x& C5 q3 Qstatic void mqtt_proc(mico_thread_arg_t arg)
" B1 w, V- W6 B6 A: Q6 H{
# u, F1 k- F+ J' H  wifi_station_log("start running mqtt_proc thread");
- i& d/ A: Y. }   //easylink_extra_data;* N. j' n( c9 k# X, X
  mqtt_client_demo();
. @! X/ N. {" H) ]  wifi_station_log("end running mqtt_proc thread");! }: z% b$ f( m  @0 Q- O- |
  mico_rtos_delete_thread(NULL);
  U( v% ?1 q5 }+ G! r; H4 _. O% `}7 @. n+ E4 \! m% W. u
: C6 T8 W/ _0 L' Q9 p' _
static void micoNotify_WifiStatusHandler(WiFiEvent event,  void* inContext)4 J; d( N2 N) U0 |8 _! Z9 D  @0 K) X
{
$ Z0 Z5 R* v* k) j1 ~  APPD = 1;
$ T" Z* f/ Z& T  switch (event) & y6 U2 k) g$ b. K1 n/ \) g
  {  q( h9 }0 R' k
  case NOTIFY_STATION_UP:
+ l1 P0 f* ^0 ?3 L" y9 R. H# a, M* f    wifi_station_log("Station up");% F2 k; r0 O0 J' \/ w

' g) b+ o! B- X* Y4 ]5 |6 \2 q: w+ D
  //  wifi_station_log(da);
: k+ o: t0 w# Q" |4 X1 e/ T& @4 a  G    //aliyun_iot_mqtt_network_event_callback(ALI_IOT_NETWORK_CONNECTED, NULL);/ _1 u0 R1 R0 }. @$ t; A, q7 i
    if(1 == isMqttThreadEnter)9 n) S/ C1 C' w4 m- z
    {
7 u6 q9 z+ ^0 z+ {8 C$ a+ [      wifi_station_log("mqtt thread already running");3 |- q2 m0 x: G; C0 }8 ^
      return;* W4 i. O& i, B- L& C- ?
    }
7 ~% T: c2 ]2 x    mico_thread_t threadHandle;$ w; D! q0 L; W* V
    mico_rtos_create_thread(&threadHandle, 1, "mqtt_thread", mqtt_proc, 1024*16, NULL);5 C0 s8 G' A; U& q( x& T
    isMqttThreadEnter++;( @* F( b0 @( c% x
    break;/ C* O! q8 f: f* |; v/ G
( V8 l4 M# g# o: ?# S( r& @
    break;
# [, Z6 p: J% T  case NOTIFY_STATION_DOWN:
, b7 e& }6 `1 h- H    wifi_station_log("Station down");
& m4 i/ h3 y; M* e6 {' D- }6 R( x    break;
* p8 Z' p+ v/ y# _+ @4 x. J& ]  default:( k" _2 s4 O4 z( \  M( T3 Y
    break;
+ ?3 [2 n1 O8 |/ w# {! y  }/ R0 E  p' Y1 A, r  G6 [
}
& G+ t, `: Y2 ~6 [5 ]) i) K, G8 c' Q$ z1 E8 R2 v( X
int application_start( void )
1 D  e8 |" ~3 A/ {; j7 K{ 7 C/ A& d' d3 [3 F( X, C
  OSStatus err = kNoErr;) D/ \1 Z2 L1 C5 @9 T" q
  char str[10] = {0};
, t  \' o( U/ N; ~% `% h$ b  unsigned char sssf[2]={0};
. _# X& y8 W, r0 K5 X$ j//   mico_thread_t t_handler = NULL;/*线程句柄*/ 2 c+ {$ H" ^/ C1 m1 D% Y/ W
  MicoInit();; w; r1 I0 w# U: U

, C+ k  {0 [0 y* s( D5 i  AT24CXX_sensor_init();//初始化I2C
3 n6 ?5 ]2 m: G& {1 H7 o$ W1 P  /* Start MiCO system functions according to mico_config.h, . d% w4 J* R. z
     Define macro MICO_WLAN_CONNECTION_ENABLE to enable wlan connection function
" ^- R1 r5 q, l     Select wlan configuration mode: MICO_CONFIG_MODE3 R. o4 d& H4 S5 [5 e. s; A: u/ ^6 A
     Define EasyLink settings */
4 o: l9 |1 z% D3 b. Z0 K5 {1 d  err = mico_system_init( mico_system_context_init( 0 ) );                      //
( r! `: {8 i0 l, P7 Z
$ G0 F% |3 r3 K  I4 b  /* Register user function when wlan connection status is changed */( t* O! p3 |9 ~4 F  z
  err = mico_system_notify_register( mico_notify_WIFI_STATUS_CHANGED, (void *)micoNotify_WifiStatusHandler, NULL );  I, K3 X. s9 }% n/ B$ b" M

! x  B$ A8 T0 O0 l' E  /* Register user function when wlan connection is faile in one attempt */
  Y# ~* m. m- a! F& \# i  err = mico_system_notify_register( mico_notify_WIFI_CONNECT_FAILED, (void *)micoNotify_ConnectFailedHandler, NULL );- A9 n( \% j" t7 Y" Y" J! E
# r0 |! J) Q, z7 N

$ q( j* [. w2 q8 U. X      err = mico_rtos_create_thread(NULL,MICO_APPLICATION_PRIORITY,"RTC Time Run",RTC_Time_Run,500,NULL);//创建并启动一个新的线程( k4 g& A) Z) ?9 E' G: L0 r7 k

1 L1 a3 c7 V% g! t, h0 S! j! e  ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");8 f: O; G4 f" M0 A$ V

6 K+ x6 E% p& M2 {4 ?) o  /*LED1初始化*/4 h9 z/ B. T) ~- \
  err = RUN_LED_init();
" g+ i6 |+ y# z6 `
# `: }4 \# |- F& a1 a9 [  /* 初始化 直流电机 */. V+ s; k) {' M* z
//  err = dc_motor_init();
2 ?$ L; D& e  `
8 }" m2 b0 ?1 X- W- t. L5 O- O  F
  /*初始化 温度 湿度*/
* j7 h4 b. [# d. t" w5 t2 ]//  err = DHT11_Init();
9 A. u1 B# m0 M0 v1 T! ^  AT24CXX_Write_RegData(0x00,0X55);
! I8 @* U3 c( l- m$ l//  AT24CXX_Read_RegData(0x00,sssf);* S# Q& G" d& ]
  APPD =0x55;//sssf[0]; 1 c3 V8 _! J8 u- b: J1 I  ?7 U: W2 B
  ext_rgb_led_log("%d",APPD);( t1 O( n$ [: f* n- B
//  sprintf(str,"%d",APPD);
1 [# _; M9 x% `1 |- {) q( o4 @  /*初始化 光发射二极管*/ 1 a: H, b" ?' N0 v
  OLED_Init();
6 S" F9 _/ I, f- U! `  OLED_ShowString(0, 2,str);  N) p& u& v: U) j( R/ M; U

3 K4 s' y$ u5 u  /*初始化光强传感器*/
* I# }3 ~. S2 @) E! y" D2 y//  err = light_sensor_init();
! ]* l; j$ ]+ Q, `9 Y$ [2 y9 ~% ]1 e1 i, {, i. e+ J
  /*按键初始化*/
6 L! Z4 N/ S8 S//  GPIO_KEY_Init();8 o* u7 o& b* Z9 F# i6 Z
' Z$ P- P  s) T: R

' q; Z  c0 l0 ^  {1 p( s, Z2 N, i  mico_rtos_delete_thread(NULL);
+ ^4 T1 q+ C9 z( T+ z  return err;. M$ @: a* s4 T! C# K
}3 V# `5 d; E: U* \3 ^1 n! s

1 E$ Y0 C; ^6 l$ g
& `# H5 Q8 c3 W# `- e9 V- |0 [2 h- k7 ^$ D
6 D. W4 N+ b  j- V) z# X
I2C

0个回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则


关闭

站长推荐上一条 /9 下一条

小黑屋|手机版|Archiver|电子发烧友 ( 湘ICP备2023018690号 )

GMT+8, 2025-12-1 18:54 , Processed in 0.686623 second(s), Total 44, Slave 30 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

微信扫描
快速回复 返回顶部 返回列表