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

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

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

: [# m9 r# q6 R//////////////////I2C部分/////////////////////////////
! Y7 k+ D0 f/ p$ d+ R, {' Z/**
! H6 [) U4 d) I3 _; b7 h ******************************************************************************
" F4 `4 ]7 e# N  t) v8 t  n3 ` * @file    apds9930.c  B3 D- [6 u& g3 t/ h( Z
* @author  William Xu
$ k( z; G7 G7 x, ?3 a! `2 y * @version V1.0.08 \$ n  u' l  T: T, ^) Z
* @date    17-Mar-2015
) Y( ^- q- ?7 b4 Q * @brief   apds9930 user controller operation
% `. B- Y# b3 Z. K# u ******************************************************************************
2 P( ?" V( L6 A6 x4 ~" a- b# u+ w *  UNPUBLISHED PROPRIETARY SOURCE CODE
3 ~& t* z2 {1 B5 [( A *  Copyright (c) 2016 MXCHIP Inc.
4 Z( S, D2 _6 _  K( B: T: S. | *
2 Q7 A: c+ b: T3 } *  The contents of this file may not be disclosed to third parties, copied or$ O) {4 G& N. h/ t6 o2 H
*  duplicated in any form, in whole or in part, without the prior written3 \0 C% b/ }+ W* f% c
*  permission of MXCHIP Corporation.
1 k9 ^9 g5 ?+ ~5 V8 N; ?3 s ******************************************************************************
; v- _1 ]- p. G2 q */6 y8 B6 d* c" E4 ]

4 E  f. @) \) H6 N3 c9 q3 ^

+ A: X1 m9 F: N#include "mico.h"6 m% ?3 X% O; B6 e
#include "AT24CXX.h"; O: ~: b# s* q* R' f
* B, i9 U' B9 e% x
  F: N+ i- z. M& E# \3 W: d
#define apds9930_log(M, ...) custom_log("APDS9930", M, ##__VA_ARGS__)( J6 a% |, J# ~5 Q0 \
- l* ]7 R, X" u3 ?0 H
; A; u$ h! V3 M3 K/ H- ?* ]" E
/************** I2C/SPI buffer length ******/
- M; Q: n! w9 ?#define        AT24CXX_BUFFER_LEN 3
" L# M! `4 G/ K$ _% a) e/ u3 }' ~#define AT24CXX_ID   0xA0
  g$ M4 I8 x" B* |6 E! z
8 t, c3 Z6 U6 p# B8 n0 v* u. u

7 E8 _/ L* i# u; l4 l" U( M/* I2C device */
' i3 k2 R, y: L% x) jmico_i2c_device_t AT24CXX_i2c_device = {! |* H- v6 ]9 M8 g9 ~9 i
  AT24CXX_I2C_DEVICE, AT24CXX_ID, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE
) s/ f0 k( k# z5 j6 h: P};3 `7 h* n) a7 O$ w" J  \
mico_i2c_device_t AT24CXX_i2c_device0 = {
2 R# }2 q. k1 o+ d1 \! k  AT24CXX_I2C_DEVICE, AT24CXX_ID+1, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE
/ o0 u& |8 s: Y/ V};
; c' z. V; p/ X; l8 }/*************************************************
; M6 R( {' q7 c6 {7 |/ } * Function:  AT24CXX_I2C写/ m7 i% O1 Z! y) v3 T3 _8 a# h6 f) g# p
* parameter:  % E& T; T0 X% h( W
              uint8_t reg_addr          地址   
1 N$ w2 X& O% x2 m              uint8_t *reg_data         参数6 g! L3 r9 U4 ]* m+ c4 f
              uint8_t cnt               个数! R' c1 _- S: F# t
* Return  :  返回04 x0 M) b9 ~/ \
* Modify:* m: R0 d' @; ~' B. t0 z  \: C
**************************************************/$ {3 A! B. Z5 z, m& }1 p; ]3 R. h
OSStatus AT24CXX_I2C_bus_write(uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt)
3 `3 a' D9 z9 T! B+ g9 w{8 z/ t* O' D% g3 x
  OSStatus err = kNoErr;
0 B  s: a+ u+ _2 w9 K  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
6 b* H' u' {, a) N
# e5 u0 E9 t9 X- _5 G" E
& v' R  K$ f/ R0 {3 C- ?" z# q
  uint8_t array[AT24CXX_BUFFER_LEN];$ ^1 j! g& n: z+ ^  Q
  uint8_t stringpos;
( x& ?8 ?+ j2 C: `: q  array[0] = reg_addr;
; ]$ ?4 p' @3 i. S" [8 O  for (stringpos = 0; stringpos < cnt; stringpos++) {
; A+ z7 D: m5 S          array[stringpos + 1] = *(reg_data + stringpos);' F3 y& x8 l& m7 N3 I7 }, Q
  }
3 v( q  z7 n$ z2 o2 `; n" I2 {! {
7 L/ y5 U/ K- U1 `+ O8 Q
2 ]5 v9 Z. F; [; `5 N5 }8 n
  err = MicoI2cBuildTxMessage(&apds_i2c_msg, array, cnt + 1, 3);
, t1 r# E# p7 _* P) G% K  require_noerr( err, exit );) F4 U1 b( i- Y
  err = MicoI2cTransfer(&AT24CXX_i2c_device, &apds_i2c_msg, 1);
, u( V. V& q( |$ v. {  require_noerr( err, exit );) |( K/ S5 O; y6 Y/ q; P
  . M/ }4 z- U- \9 k! H# G1 h
exit:  * Q% O4 N; r# q5 U' i: \
  return err;9 V" X$ q2 {) X, u8 O
}
. _6 {3 V' T# K/*************************************************0 H- }6 C; ^; @; q+ Q# M) Y% ^
* Function:  AT24CXX_I2C读
, B+ x3 D* c( x. Z( ]. F* parameter:  # |/ B6 C0 J! \
              uint8_t reg_addr          地址   
! W2 ?9 l# [& ~9 l              uint8_t *reg_data         参数( v6 v; |# A) y4 }
              uint8_t cnt               个数
( ^1 s% n1 Z1 p, ~( ?5 [ * Return  :  返回0
4 t+ t8 E2 F( L4 U, W * Modify:2 |/ D& U. b! l# F; d0 M
**************************************************/; l" p  l/ q* i+ b9 J" h
OSStatus AT24CXX_I2C_bus_read(uint8_t *reg_data, uint8_t cnt)
: a: l( M1 Z. R# a9 t{' A6 O+ \# y1 K. |6 F; m# H1 p
  OSStatus err = kNoErr;1 n5 B2 X! x4 Y7 M$ G% b' T
  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};# v' Q  m$ e- M1 c) u) n4 Q

9 F7 O4 ?9 B! U) v

' H/ Q  i' j0 x4 o* x. _* V, B  err = MicoI2cBuildRxMessage(&apds_i2c_msg, reg_data, cnt, 3);
; c- B, t( j. c. B! j8 p  require_noerr( err, exit );4 Z' U4 [) j& W! X4 A6 I) r
  err = MicoI2cTransfer(&AT24CXX_i2c_device0, &apds_i2c_msg, 1);
) L& N+ I+ M1 M' d+ D$ k1 r# I1 e  require_noerr( err, exit );
1 O: y3 {! s2 U8 e0 [8 r4 V, p- N: m; u9 G
: j, {& c8 C3 r3 }
exit:/ P( t8 F6 T. a5 b% [/ m
  return err;
4 e1 H! `' i$ l1 G- J}
" ]0 [3 q. Z! I  J5 O8 c9 g/*************************************************
5 }- R+ @! V: U0 t. J5 H) D' S9 k- A& Y * Function:  AT24CXX_I2C写一个字节) W# J; f' p: X- s. i
* parameter:  . [  Y/ H8 M9 L
              uint8_t reg_addr          地址   
( K- E! T6 E6 y& n+ f/ O              uint8_t reg_data         参数. h1 ]. R0 K1 q/ S0 d6 b
* Return  :  返回0
' ^5 h& S$ L! F$ V7 v* @ * Modify:, ~$ h" F4 p* O! B! M
**************************************************/; \& _) e* g1 N" a: P
OSStatus AT24CXX_Write_RegData(uint8_t reg_addr, uint8_t reg_data)
( C# r0 }) ^3 w. e{
6 ~& E, W/ s5 w% J OSStatus err = kNoErr;
+ B9 o( o  ?8 \0 Z0 `" a err = AT24CXX_I2C_bus_write(reg_addr,®_data,1);
, x! K4 I1 c; i2 K6 S. p  return err;
5 D; e6 Q% z' _9 D, y+ t! w+ ?}1 q% l( {  R6 T3 c  v
/*************************************************
  o1 p. B. n+ `) t * Function:  AT24CXX_I2C读一个字节* _8 }$ f0 S# _: H
* parameter:  1 P5 p; a4 T. k' j
              uint8_t reg_addr          地址   
1 ~  R& D! q* J1 B1 k% C              uint8_t *reg_data         参数# \  k: s, p% i; ?, k' n8 x4 V. }) X: i
* Return  :  返回0
- ~1 H% T$ I- ~2 K6 R4 P8 V * Modify:
8 |: |( h8 y8 \+ l8 o6 ~# W1 @" H**************************************************/
6 P* T; a) {/ \; sOSStatus AT24CXX_Read_RegData(uint8_t reg_addr, uint8_t *reg_data)
2 m3 h% ~3 I9 I8 g{
" @7 S% r6 z/ U( G  OSStatus err = kNoErr;3 T- {0 U' l! p2 }8 e
  err = AT24CXX_I2C_bus_write(reg_addr, NULL, 0);
2 i- x7 t, Y( o" F  /*Should have delay time here*/7 i/ s8 N. ]0 E& ]5 _
  mico_thread_msleep(5);
! V# Y9 b* E+ u, ]% D5 ]8 ^  err = AT24CXX_I2C_bus_read(reg_data, 1);6 j! T5 v/ h9 b8 X
  return err;  
7 @6 J/ s" j5 |. p% J& w3 n! H% f}1 f" k, C5 e3 x
/*************************************************
. M$ _% p0 m$ `: H% X0 E * Function:  AT24CXX_I2C读一个字节
; u, P. x' K8 q, N* parameter:  
9 ]" J- ?5 n  v1 r0 K              uint8_t reg_addr          地址   
! W5 e1 C  b' n! z" @0 i- _3 W              uint8_t *reg_data         参数
$ A; I7 Y% z5 I9 a6 t * Return  :  返回0
# l. @$ J7 {7 s9 `, i4 H- U * Modify:
9 W; l5 m$ t7 A  J9 t**************************************************/
5 A) L9 {: {+ Z7 @//OSStatus AT24CXX_Read_one(uint8_t Write_addr,uint8_t Write_Data)9 M7 Y( U3 d; F1 r+ y1 M
//{3 x# M* O: a( Q( ^0 T9 X  D
//  OSStatus err = kNoErr;1 |( w2 Q4 U- P; K2 p
//  err = AT24CXX_Write_RegData(Write_addr,Write_Data);
/ d8 k% i* T8 G. W// return err;
  a9 L5 M7 Q1 J& A//}( e% w" |# r& f" _7 s( L6 s8 }
+ {. O9 l( n+ Z: q# U* u  S$ V
: M+ m; E% S% g- J$ r# H6 R# v  H# e
OSStatus AT24CXX_sensor_init(void), Z2 y: J) m# q* u- ?7 k: s
{
4 e9 j4 ~' M/ t6 b  OSStatus err = kNoErr;9 G  i& q7 s0 A" N, c7 M
//  uint8_t device_id;. Z+ ]* }# a6 l
  . i; \% }% w) c2 A4 M
  MicoI2cFinalize(&AT24CXX_i2c_device); 8 O# M! e! A5 L
  ' |5 Z. k( l4 ]# k, }* ]
  /*int Si7021 sensor i2c device*/! p9 O& j- i) s9 J4 P) r* l
  err = MicoI2cInitialize(&AT24CXX_i2c_device);
$ M# _- I, _& i  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cInitialize err = %d.", err) );
+ ^0 H: T7 a/ b: L  ; Y  S- K. y# F
  if( false == MicoI2cProbeDevice(&AT24CXX_i2c_device, 5) ){4 |# H) K/ _& \$ P
    apds9930_log("Si7021_ERROR: no i2c device found!");) U  O3 o# b; ?7 G* `
    err = kNotFoundErr;
$ ~+ B$ o( P( w, e3 A/ ]" x% J& P4 s0 K    goto exit;
  d: I3 M$ @5 Z1 U+ ~) T. y) v  }
7 v8 P1 }/ n8 i) P6 P2 A9 g& Q        else; \; m( Z2 [, z3 i$ n6 a  L" ?
        {$ s6 w$ O( l6 N3 P4 f% G2 n0 r
         apds9930_log("Catch I2C device!");
6 B# ?; h% c1 P1 F7 N       
" F0 v; d# d; g5 o0 K" _        }  
9 o& h2 L8 t* p4 J1 b3 Q) aexit:
. D* s, z5 g2 S- N' Q  R  return err;+ ?- K% q; m5 y
}! U0 L6 h# _/ A+ m
0 I5 J; G: Z$ h8 f6 {1 V) x

2 a. N: ~/ V% w! ~" D
* u, O: o. o* v) H' x6 v5 j3 E5 b
/ p6 J0 Y8 D/ Z3 l) k
OSStatus AT24CXX_sensor_deinit(void)5 D' ^7 f3 |4 m; C
{
* }. a1 D; @, @( S  OSStatus err = kUnknownErr;7 q3 F( ~1 j  L0 y5 ?* I/ `5 e
  
; w2 b" A1 J3 Q0 W/ x  err = MicoI2cFinalize(&AT24CXX_i2c_device);' b7 r5 v2 z7 j. a, z# C7 p
  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cFinalize err = %d.", err));8 _) d5 }* A  w& h* K  r8 B
  
! M; K2 h9 J* p( W% L# mexit:
% x* I* Z- I& M/ ^/ N: g  return err;4 V+ G% x% C) a
}
# `  a( t0 s2 F' o* l% z: c//////////////调用部分/////////////////////////////
9 T' r: J5 N7 m% S# s0 g  t% Y+ v/ F! T5 z0 @8 ?% T
#include "mico.h"
: \& C) J# g* J- S( a#include "micokit_ext.h"0 t9 Y$ K0 S: C) ~
#include "json_c/json.h"3 @5 f$ }/ k9 Q2 b8 h
#include "sensor/DHT11/DHT11.h" /*温湿度传感器相关头文件*/; E& M1 H3 ^. N7 t1 }
2 }# w, T5 G4 F  s

+ M" B0 N& R! O! Z3 ]#define wifi_station_log(M, ...) custom_log("WIFI", M, ##__VA_ARGS__)
5 d; R7 D# f- p: O+ c8 G#define ext_rgb_led_log(M,...) custom_log("EXT", M, ##__VA_ARGS__)
' Y' H! S& l" b5 ]1 p' n0 m& b#define COLOR_MODE RGB_MODE, M( m2 z1 Y5 G- u4 j+ i
1 Y4 k8 F$ {! L# q  O

9 `. @0 F6 P) \- }; y. K9 H% xmico_thread_t t_handler = NULL;/*线程句柄*/
7 K" s; j) G  Qmico_rtc_time_t cur_time = { 0 };5 @' l0 _! S0 o; A
unsigned char APPD = 0,SDD=25;+ S: H$ F$ r" s. F
typedef struct
, c& h/ ]' @4 a7 G{
2 l! C9 c6 S( v unsigned char Alarm_N;         //闹铃个数
% P' N7 j# T4 R unsigned char Time_Alarm[3];
! A, H, f- \% N* H0 G unsigned char WeekDays_DATA:3;
6 V: L( Z/ ^: H. w$ h! }2 e// unsigned char
- n( L  G# l* ~& C! ?}Time_Data;0 s, ?0 Y# s3 u
typedef struct notify. I3 Q0 N' H  w- m8 D2 @+ z: p" ]
{
5 m% f4 L4 f5 A/ @  uint8_t cmd;
- j0 |/ J' @7 m  Y: R} notify;" _+ j$ y3 v; l3 {( N6 r8 }0 N9 _
Time_Data Time_Run;$ z/ v4 J  h$ X* ]
3 _- @; `( G3 ~6 D% K
static int isMqttThreadEnter = 0;2 R  q- \0 b$ |6 X% F4 |8 l
/*************************************************$ `( E: e' M( D% I2 i- o, C5 }
* Function:  2^N计算函数
/ B( O4 @; C& Y! l4 v. q0 ]! P8 R6 m * parameter/ j9 k0 T5 W  h- I" c# d
* Return          sum计算的结果3 w- Y7 \8 O5 d
* Modify:
4 H3 W; g5 N" |- P$ S& G**************************************************/
$ j% Q& m- n. dunsigned char Mult2(unsigned char n); P0 s$ ]8 {/ K* w) C% R9 ~6 h% \
{
3 @6 H: `( ^" A- j1 V  unsigned char sum = 2,m;; M4 o5 J+ d" `, w' w
  if(n==0) return 1;, O; e* A. q1 M
  for(m=1;m' B; ?9 E" r. W  Z( i2 Y; P
  return sum;8 G6 f3 @( J* O/ d( `- B+ i
}
: X7 T; {: E- I" z, b5 V2 y2 n, w9 w
, ?& s( k6 }# H. U$ D: h9 A7 g/*************************************************& E3 R! A& G9 D; D6 N$ d4 w
* Function:  RTC初始化函数
7 X) B, Q! ~6 g6 L; m * parameter2 [# P9 G! ^9 u& @0 w
* Return
; ~2 a4 N3 L( G) B. T$ z: C1 |' { * Modify:8 Y+ ]& r6 m7 `/ ^
**************************************************/
1 D$ B% W" Y0 x  w+ Bvoid RTC_Time_Init(void)* x, O& q$ c4 s2 }" M4 B- r& D0 \
{! s! `$ i' E5 P8 ~$ e/ G7 ]6 i
  cur_time.year = 17; //设置时间# [6 Z- F( o$ _$ A
  cur_time.month = 3;1 r' p& f8 G% G, x$ B# h7 S
  cur_time.date = 23;
6 @6 L- d% `7 a  cur_time.weekday = 4;+ }% C# S& z" ~
  cur_time.hr = 23;3 |* _8 O' X+ V# L5 V
  cur_time.min = 58;
! w. y( k  A8 j8 _5 }: C  cur_time.sec = 0;
( _+ n3 M. \8 z5 u8 u! R3 S/ h  Time_Run.WeekDays_DATA =cur_time.weekday;
& ]0 b' p0 p# T9 g3 w  MicoRtcSetTime(&cur_time);            //初始化 RTC 时钟的时间 9 I' `* R( w- k2 m4 a! X; `' V
}2 |( e; M. C* d$ H8 _
/*************************************************6 T# Q1 ^: O; x0 e, O
* Function:  RTC时间允许读取函数
4 c+ F1 w- Y( O* a" Y * parameter
: P. C0 y4 \) w * Return( _2 x5 ~+ r) q$ _, B
* Modify:
; q- @# N4 B+ R8 y" [**************************************************/
4 e1 M; M, h0 S2 zvoid RTC_Time_Run(unsigned int arg)
1 e. ?$ I$ k3 ^! N' {* b{) [, Z2 H: N9 d0 ]5 Z
  RTC_Time_Init();
# V# E8 @4 P% ` while(1)
7 X4 E) o, D1 A  s* P6 C- ~8 P {
3 H$ S+ N$ V$ `6 ^3 m' m  MicoRtcGetTime(&cur_time); //返回新的时间值
. @- i' r( s6 E+ r- `  sleep(1000);
5 H8 \0 O/ Y) u) J }% U& i! [' D# H  z! C5 D
}9 C' i# b! n) Q" q5 k: |9 [4 e! N" V7 X

. P9 n- E7 d/ h9 A  j
  p2 ^3 z8 p" o9 y2 Hstatic void micoNotify_ConnectFailedHandler(OSStatus err, void* inContext)
9 C% Y4 p' g6 p: H{
, N/ {( z. T3 g! K2 q  wifi_station_log("join Wlan failed Err: %d", err);; J3 h' ~' B  T3 U! }
}' e- t+ \" z" A7 M: Y4 e) X

% R) i$ j; U" x4 C- G6 Ostatic void mqtt_proc(mico_thread_arg_t arg)$ }$ z7 Q8 i* C5 u; u& k
{
" L+ q; t2 F/ C/ ~; L$ p7 o  wifi_station_log("start running mqtt_proc thread");) {" y# E. ^; f- z; h9 T5 b$ |! U8 Z
   //easylink_extra_data;
# u$ H4 F& U/ y: t  mqtt_client_demo();
1 d5 \1 l; J) h; j6 s* \/ C3 d  wifi_station_log("end running mqtt_proc thread");) l) h6 V0 ?0 U4 e* b  Z
  mico_rtos_delete_thread(NULL);* n; p% a; d+ q/ M8 R5 r; s
}( ~2 ]3 }. m# r8 g2 Y( I

9 C1 {! A' }7 P+ Z, V9 hstatic void micoNotify_WifiStatusHandler(WiFiEvent event,  void* inContext)
# J) k8 e/ h3 c  \: Q+ ^{/ p$ U" J. T! P: Z9 G
  APPD = 1;. r. Y8 P% e1 o  u7 }3 Z9 f( g
  switch (event)
" M/ s# [$ ~: o+ B' z6 u  {. A+ Y/ y$ R7 c# `" t
  case NOTIFY_STATION_UP:
/ D) t# g# ~( h7 o1 j& h& i    wifi_station_log("Station up");
. D' ~6 {" K, k9 ]# X8 k
+ ~3 m6 i4 G, c: o. p8 w" v+ t2 U$ r" E, j. U. o$ G
  //  wifi_station_log(da);
0 T! b% O1 x# J0 g" V  g    //aliyun_iot_mqtt_network_event_callback(ALI_IOT_NETWORK_CONNECTED, NULL);! ]' r. R: |% f2 C; N9 k% \
    if(1 == isMqttThreadEnter)
  v4 `( i% H' C- j1 }9 L8 }    {% _- d0 b0 G5 _& `# i2 ^
      wifi_station_log("mqtt thread already running");
' Z6 x, O/ B% |: v& j+ _4 t' |      return;; V) b" q. Z) K8 N' |9 J
    }
5 t: G  B& Z2 |    mico_thread_t threadHandle;8 ]$ i+ W$ f! G
    mico_rtos_create_thread(&threadHandle, 1, "mqtt_thread", mqtt_proc, 1024*16, NULL);
9 Z8 }+ f1 L$ H    isMqttThreadEnter++;
9 m/ b5 `" k$ h" t+ \( {3 R    break;- N; z3 E" y- p4 |4 \  q1 h
* @" t5 w' Q3 {/ w* l4 D! [5 b
    break;
1 I$ V& d1 X  d- `  case NOTIFY_STATION_DOWN:$ m* M& P; V. ]* J
    wifi_station_log("Station down");
# Z% T8 [# x9 s7 p+ A! w    break;
# |" o5 L) |" l. U6 f  default:5 |2 A, Z" h. e2 F. r: n
    break;
5 Z3 r$ ~+ l$ v7 c  }  ]3 I9 ?  A/ Q  G, r
}" k; S0 z; o+ Q! P  q

# p6 c: @8 D+ Z  N* e! U$ Uint application_start( void ). E, ~2 C* \; d: r
{ 1 ~  }0 f- Z5 j7 h& t7 o( ^
  OSStatus err = kNoErr;7 Z- m" v- v* H8 ^
  char str[10] = {0};6 p' |' L* q! R/ i$ D- a4 l
  unsigned char sssf[2]={0};% J) H6 N! v2 @
//   mico_thread_t t_handler = NULL;/*线程句柄*/ + u& {: c; R4 T) [* V0 F7 ]
  MicoInit();# H; J5 g8 |) q$ l
8 G* ^" n& V1 s1 Y! }
  AT24CXX_sensor_init();//初始化I2C
$ u% W! z& u/ D/ z+ [" d  /* Start MiCO system functions according to mico_config.h,
# R# g% x$ G. O     Define macro MICO_WLAN_CONNECTION_ENABLE to enable wlan connection function
( g, J) a' R: O7 }     Select wlan configuration mode: MICO_CONFIG_MODE
% M; g4 j' |. `9 f2 B     Define EasyLink settings */5 \9 E" ?* V$ e# A+ y; `
  err = mico_system_init( mico_system_context_init( 0 ) );                      //
$ ]- e& N( Z; ]7 B; p# E+ q' H0 _
! o, H" l1 I" A8 @8 ?; k  /* Register user function when wlan connection status is changed */+ g5 T% c2 y% I* j* q
  err = mico_system_notify_register( mico_notify_WIFI_STATUS_CHANGED, (void *)micoNotify_WifiStatusHandler, NULL );
' t" D1 a, ?+ m$ x; k3 N
! u! N- N* q' V/ U  /* Register user function when wlan connection is faile in one attempt */6 P3 t4 L  z4 ]6 o  x, F- k3 x
  err = mico_system_notify_register( mico_notify_WIFI_CONNECT_FAILED, (void *)micoNotify_ConnectFailedHandler, NULL );6 j& N1 b* l% z  c/ v7 C5 b

6 L) h1 I8 N* i/ ]0 X0 U
7 ?' @- K1 m( n6 F$ z: ]      err = mico_rtos_create_thread(NULL,MICO_APPLICATION_PRIORITY,"RTC Time Run",RTC_Time_Run,500,NULL);//创建并启动一个新的线程
& p) l# H; E: e1 {
% k0 V* A6 e3 S( y8 F! `8 Y. b  ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");7 X7 `9 I7 I/ w9 K2 {" j5 O
0 a) w& i1 m% H" d) T
  /*LED1初始化*/
' Q; ^3 N7 J" Z; l4 A& E3 X  err = RUN_LED_init();/ g5 Z) q( G8 C- ~$ m( l. N9 z5 L

/ q  f( D7 q8 @7 `  /* 初始化 直流电机 */
) x, X* [2 A  F+ D& S5 ^6 E. T//  err = dc_motor_init(); 8 H' |, T/ D6 O$ k

" \! n% m. v' o0 c+ ?0 u
/ [" w- W4 N! F+ `, q% W  /*初始化 温度 湿度*/ 6 J, q; V+ G, z! u* @4 n
//  err = DHT11_Init();% H1 a+ o# @0 @3 K5 G4 J, g9 N- J0 |
  AT24CXX_Write_RegData(0x00,0X55);
/ C  }2 Y. D: S  p: Y& k//  AT24CXX_Read_RegData(0x00,sssf);
  I" P9 q9 d3 l2 V  APPD =0x55;//sssf[0]; 4 S$ a8 ], s; P( \
  ext_rgb_led_log("%d",APPD);
: k0 W! D5 F& d+ l$ K+ C9 ~$ f//  sprintf(str,"%d",APPD);
5 J, {4 @- \( Q: ]3 [! H8 B  u  /*初始化 光发射二极管*/
, D' j) X# H8 A* v3 N3 k  OLED_Init();6 D  a0 m$ H0 k0 f
  OLED_ShowString(0, 2,str);5 `1 Y4 z" M2 G; V" Q+ [
. o9 @* G( b  {4 k0 M: G
  /*初始化光强传感器*/
: w3 X+ v1 s$ d# M& `. H' g//  err = light_sensor_init(); ' H! e  V7 t8 i% I% x  |  l  x  n
$ K! n. l/ ~6 _& G2 U, y
  /*按键初始化*/
6 _8 ^" m- }' r8 |8 T//  GPIO_KEY_Init();, D2 I3 D' o( l
* |* X7 l- r" O" v. _2 X2 A
6 v$ e0 j; w# p! k
  mico_rtos_delete_thread(NULL);7 y" r' q% B8 d
  return err;
# }- |; ^; A/ E! ?7 \: \. E}
. p& T* {# {& n
5 w7 l6 q  {8 V' H/ ?. L+ i7 }$ @0 s0 z" S) L: |
7 _& A1 g3 a4 f8 o- f! `  I

8 R7 E" F7 q" J
I2C

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2024-9-2 08:13 , Processed in 0.664316 second(s), Total 47, Slave 33 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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