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

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

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

1 Q& q+ C, x* ~6 g! c( K. I  Z: S) g//////////////////I2C部分/////////////////////////////
# ~0 w8 I! ^. X/**" l6 V& M; p& ]
******************************************************************************- z) v- ], h% D! z$ f, S
* @file    apds9930.c
( z2 z' f; A; v * @author  William Xu2 i4 q0 m  Y3 @; n" L" R* w# m
* @version V1.0.04 g! s+ g$ [" f- Z4 @& I( S( w
* @date    17-Mar-2015
! \' [' Q+ H- h" F: f' c * @brief   apds9930 user controller operation
# T. h8 i) o0 v0 s' w! | ******************************************************************************1 C4 M6 k, p9 R5 U
*  UNPUBLISHED PROPRIETARY SOURCE CODE
4 {6 ?6 V: y, } *  Copyright (c) 2016 MXCHIP Inc.7 X2 w& e3 u9 i0 @& T
*
0 n) l; q9 ^3 k, Y$ B7 n4 J *  The contents of this file may not be disclosed to third parties, copied or+ g; D" v- u. ]8 s! G$ B
*  duplicated in any form, in whole or in part, without the prior written3 H* U. `( l) g+ ?' ^' _9 N
*  permission of MXCHIP Corporation.( i: p7 ^7 k3 Y5 b1 ^/ |, h
******************************************************************************
3 ~( z- S* y$ Z7 ` */
9 t/ X+ I! Z1 |+ S6 |/ a% d; S, {+ {4 S2 I8 d9 @
  Z2 C: k  j: q
#include "mico.h"
' f5 m# B3 V6 C% z8 R#include "AT24CXX.h"
$ c0 `3 W- Y9 K2 V" |
* M9 j! F; ^; K; I+ g

) _$ w) Z' p( F#define apds9930_log(M, ...) custom_log("APDS9930", M, ##__VA_ARGS__)
- F3 {# T9 C* A/ N. f8 T( S* @) n+ y3 g  l

1 ]0 b) r/ C( U- s- g/************** I2C/SPI buffer length ******/
" s; ~; T: ?. y#define        AT24CXX_BUFFER_LEN 3
! A/ p; F0 _7 E( h#define AT24CXX_ID   0xA0 ) |6 m* [, W9 i; J/ ?9 E7 n; @' r
) B; [0 v9 l% D( ]
: u+ f) U$ S/ j1 @# }% ]$ p
/* I2C device */
. {0 M. G9 o4 V/ }5 Pmico_i2c_device_t AT24CXX_i2c_device = {
  a# m  c8 @2 J' v8 f' d2 w; @# s  AT24CXX_I2C_DEVICE, AT24CXX_ID, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE
; ~- v  `7 H2 a5 S2 u};6 e& L8 _! [' _9 c; b/ g
mico_i2c_device_t AT24CXX_i2c_device0 = {
: u* ], R+ T! Q  AT24CXX_I2C_DEVICE, AT24CXX_ID+1, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE8 ~2 y) ~) N; V% Q4 V1 X2 x/ y
};
1 R, t5 E, V( j0 H! A/*************************************************/ _3 J* x7 W, C+ ?3 D' c
* Function:  AT24CXX_I2C写
- l/ X- L" d' M/ t' y* parameter:  
9 O7 k9 ~4 y3 x1 h1 r              uint8_t reg_addr          地址   
" b& H  i/ L: n9 O" R. `              uint8_t *reg_data         参数
+ v( R) N  t% b% t) |# M/ ], o% H) r              uint8_t cnt               个数8 u/ W, o% {$ B( F* }
* Return  :  返回0! g; m2 d, c, G" K( E
* Modify:$ [0 b. T' J1 z+ g( B
**************************************************/# c2 H# O6 @* p3 i/ _* O, y+ H
OSStatus AT24CXX_I2C_bus_write(uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt)
+ h+ L! f5 A# h0 J0 W{
: D- Q, }  `% k( E- L& I  OSStatus err = kNoErr;4 v& p9 f" A9 b0 `1 c5 I
  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};7 A4 j, {  P4 ]- i7 [) W# w

( i7 y& p5 N* N" _3 w1 L8 ]

5 L3 t- x& R5 t8 X( M  uint8_t array[AT24CXX_BUFFER_LEN];
& o8 c5 o1 b: d  uint8_t stringpos;8 N1 E$ x0 N- z0 f
  array[0] = reg_addr;
) t- o, \$ C8 ~. N5 b0 y1 O  for (stringpos = 0; stringpos < cnt; stringpos++) {/ c! P( x% i9 O, `/ @( d# l
          array[stringpos + 1] = *(reg_data + stringpos);& \" O& i# N; e9 w8 O# A
  }
6 T. z/ f6 j# J9 B$ _
* N4 B5 @; ^! t7 @
: [; g8 |0 e2 }; O8 U
  err = MicoI2cBuildTxMessage(&apds_i2c_msg, array, cnt + 1, 3);5 u( d" u$ q0 ]$ c) Y6 o4 N9 W
  require_noerr( err, exit );
* S7 P2 m  \  e  Z" n" a$ D  err = MicoI2cTransfer(&AT24CXX_i2c_device, &apds_i2c_msg, 1);4 b* @7 V6 A' ~8 q6 z1 V5 X
  require_noerr( err, exit );) q3 m, R# m5 e( Q
  
' S" N, c% Z5 N1 i: u8 Cexit:  
: U) f* G& [" x1 q0 r4 Q  return err;
/ F1 c, h+ E7 T6 \* t0 ^2 `% ^4 Q}( n& c7 f/ a% T# s; G9 @! c
/*************************************************
2 |$ U: B8 u! C5 u. H: M * Function:  AT24CXX_I2C读
/ c) `' o5 |: B7 h% Y* parameter:  $ i3 j8 ]( }% z5 _% b9 S9 v
              uint8_t reg_addr          地址   5 ^0 I& U5 o0 ^5 e" J
              uint8_t *reg_data         参数! B+ w1 d# X' t! \' O; |2 S
              uint8_t cnt               个数5 f, K  F7 O7 {% Y: P
* Return  :  返回0
0 K2 K5 b7 C+ x  u: v * Modify:' ?- Z, h! K$ J. i6 f+ b  {
**************************************************/
' [4 r# K# S! P5 O# E/ D2 y. JOSStatus AT24CXX_I2C_bus_read(uint8_t *reg_data, uint8_t cnt)
5 y6 r& f0 G0 Z$ k+ B4 p/ o+ Z{  P6 W& A9 L0 _* h
  OSStatus err = kNoErr;9 ^: k9 @* b  j' H" n
  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
! M1 e" H3 d5 O$ }7 q
- `! T1 \& ^) C% G* b
- M: a+ B, h! v! K: X5 q7 |9 X4 f
  err = MicoI2cBuildRxMessage(&apds_i2c_msg, reg_data, cnt, 3);
& A, l7 ^. f1 T' [2 D  require_noerr( err, exit );
# g- G* b6 V* K/ k/ [  err = MicoI2cTransfer(&AT24CXX_i2c_device0, &apds_i2c_msg, 1);
7 y' E+ i4 D+ H3 M% U  require_noerr( err, exit );
4 S$ E8 P3 r7 d9 r: l, y: K! r' T3 w+ [
, a7 F& a1 b9 P; N
exit:
9 {: F4 j6 c  W& i4 ?; W  return err;
- e& g7 @  \7 r* j7 Q4 o}, k, l% `1 U: w8 o
/*************************************************
& `8 N5 ]3 p2 V& ~. j * Function:  AT24CXX_I2C写一个字节% m3 I: a; U4 r2 p. ~
* parameter:  5 _1 e* b3 k; E1 o
              uint8_t reg_addr          地址   
+ j9 y! H4 t! y  m# N              uint8_t reg_data         参数3 J) \( V, y. |
* Return  :  返回0
% H% l( P$ p" |" J * Modify:8 N- V: {6 ~- @/ u, U# P% A8 B
**************************************************/$ c4 A+ b3 W# o, o/ ~! E
OSStatus AT24CXX_Write_RegData(uint8_t reg_addr, uint8_t reg_data)
5 t+ Q0 ~+ `* k" s{7 ^+ V  c5 ?: i% O. N/ C
OSStatus err = kNoErr;
! @6 U' q, `( [ err = AT24CXX_I2C_bus_write(reg_addr,®_data,1);
4 T' G+ A' a( x) F" y  return err;* M# e- Z( e6 `: I
}
8 d) F- T1 e# h5 r/ I8 R! F# j/*************************************************
# f7 a- U8 h. ]9 [ * Function:  AT24CXX_I2C读一个字节& \/ s) _. d4 q/ Q6 n+ r
* parameter:  
" u' m# Y6 y: f) ~+ T# Q              uint8_t reg_addr          地址   
" P8 u6 M- m5 p: P; |              uint8_t *reg_data         参数
7 v( k- A' r5 k/ b+ J1 G" k * Return  :  返回0
8 ?2 `* D: v% c * Modify:
; I) T) Q. e% g**************************************************/% x$ n. l0 W0 z) b5 ~
OSStatus AT24CXX_Read_RegData(uint8_t reg_addr, uint8_t *reg_data)
* L8 o6 e$ m2 L  a  O9 }2 ?. Q' g! n{% J$ a! E& g4 M% F( j$ D
  OSStatus err = kNoErr;. o) j& R- G2 s$ O' B
  err = AT24CXX_I2C_bus_write(reg_addr, NULL, 0);: M) j- h6 n9 |0 u7 N' \' y4 M
  /*Should have delay time here*/3 u& C1 _" k' \- }
  mico_thread_msleep(5);, h5 b  V1 Z  i; C* @3 g# [
  err = AT24CXX_I2C_bus_read(reg_data, 1);
* m% M+ u8 Z6 M; s/ a  return err;  
4 P5 i. ^$ p1 C0 x& n}
6 Y+ E5 k+ J. o% a0 f* m# F/*************************************************
9 W) y: X1 S4 a- v- `' r2 C# |8 @& u * Function:  AT24CXX_I2C读一个字节! e  M, U  }, U& p& q
* parameter:  * e/ M+ U6 Q2 p/ M0 f7 ]+ b
              uint8_t reg_addr          地址   
- l/ H7 b5 B" h/ k% d: |' d4 Z              uint8_t *reg_data         参数; l& v. r2 g- [8 E3 s
* Return  :  返回04 d5 D) t8 e4 z& G/ Y$ l' b
* Modify:
0 M, [0 A; B% Y) U  N; u**************************************************/
& V; I9 l* b* _5 A) G" Z. I' d//OSStatus AT24CXX_Read_one(uint8_t Write_addr,uint8_t Write_Data)# c- }. Z2 B$ B! X
//{
6 X& h! e. w) s//  OSStatus err = kNoErr;
% L: P! y/ e/ A( I& w# k//  err = AT24CXX_Write_RegData(Write_addr,Write_Data);
# K" K. `! X  n// return err;
5 ]8 Q+ p! u) [$ ?( X) i//}
8 \; ~5 L& v& v0 v1 `: x# ~
% ~9 O1 x/ A# x0 r2 M, Y" ]2 {& h

# ^. T: L, W. O& S6 d. fOSStatus AT24CXX_sensor_init(void)3 Z- A0 F/ _, `& a
{) o  T2 {6 |$ x; e7 b, C, P
  OSStatus err = kNoErr;4 N0 Z) x1 Z9 G7 B; [, m
//  uint8_t device_id;0 X+ A; C" Y# l0 }
  " `* ^6 ~0 {# ^7 t) c1 Z/ @
  MicoI2cFinalize(&AT24CXX_i2c_device);
* Z& P% t9 C! c/ X' F1 n1 ^+ R  ' s/ g0 h; k' \$ U; e. G  N9 }
  /*int Si7021 sensor i2c device*/
" ^6 a3 P2 }; ?* u- m, G  err = MicoI2cInitialize(&AT24CXX_i2c_device);) S& }$ F; q& u: t1 [+ L2 Y" E0 b
  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cInitialize err = %d.", err) );' o$ d3 C+ E  K* W. Z' D9 G
  3 W1 [7 |1 H- V) P) m% R
  if( false == MicoI2cProbeDevice(&AT24CXX_i2c_device, 5) ){# o- ?- q6 g1 [! I8 S' n6 R8 Z
    apds9930_log("Si7021_ERROR: no i2c device found!");5 W7 _. Z! h7 \4 ^. u, ~( |& u
    err = kNotFoundErr;2 F: y2 }4 N$ ?# [: J
    goto exit;
: S1 \7 H! y- q4 v' F1 R  }$ t4 @7 O% ~* w1 H
        else
: O" _- ?( q1 ~0 h. @( T        {
, w2 ]% ?5 c) S" q9 n         apds9930_log("Catch I2C device!");
+ t- Y* \8 e& Y, w  o+ @       
$ O1 D8 e2 K+ m/ A3 ~0 N3 B/ M        }  
/ [9 j6 j( b7 A: x6 w! O- xexit:6 I" }* I% y  X" U
  return err;
' \( D+ p' ~5 R  y% N5 t- O}
9 Z# q1 J' e" e7 K  f: i+ T( S' u( m3 J2 h/ y, S. A2 `, {+ ]

. V8 q' I8 B- C% o5 R$ B: b, _( G8 p2 @7 j

  q5 E( l% J* O% GOSStatus AT24CXX_sensor_deinit(void)$ n( w( Y, G- p# }! ]
{
5 |; q( Q1 u7 v) \" ?" D6 ]  OSStatus err = kUnknownErr;
. o; ?# U% W- G  
! |) }: u7 h2 K- m7 R7 C  err = MicoI2cFinalize(&AT24CXX_i2c_device);
1 ?" N: D- I* ~+ l, O) c  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cFinalize err = %d.", err));8 }9 W2 W3 V6 ~/ F
  
0 J) K8 b. j5 x. V0 N# V8 D; F% G8 Dexit:
& |& ~0 ]  d( f9 O7 G  return err;
! Q+ }1 r6 r% D: w1 _}  H- D- k" g) I3 K8 \! X
//////////////调用部分/////////////////////////////
0 S2 d/ X% ?) T' U# d' [
; p, Q+ f! i" J5 l" U2 p#include "mico.h"4 m) S; g) p9 h$ h; \7 e+ b
#include "micokit_ext.h"
+ \  Y( m7 w' I* a: J#include "json_c/json.h"3 J  F: _9 _7 f4 C
#include "sensor/DHT11/DHT11.h" /*温湿度传感器相关头文件*/7 B' {% G. ]$ H4 R+ c3 {; g% [, f
1 s# h+ Y, R$ ^! M
  Y. z9 N5 I3 o
#define wifi_station_log(M, ...) custom_log("WIFI", M, ##__VA_ARGS__)# `) a, ?3 \; \
#define ext_rgb_led_log(M,...) custom_log("EXT", M, ##__VA_ARGS__)
  N) `% I9 f+ `# r#define COLOR_MODE RGB_MODE5 B$ G! ]% h2 |! L0 s2 b
) b% w  _1 i) b4 R8 j* f. j" ]
4 [: h( K: e2 c  m4 G, K8 p+ {& e
mico_thread_t t_handler = NULL;/*线程句柄*/ 9 W! H: O/ J' R8 @
mico_rtc_time_t cur_time = { 0 };
: d# ^6 x8 Q6 A9 G( tunsigned char APPD = 0,SDD=25;2 \) S2 j  F, |: o
typedef struct( N0 t5 y8 k" Y: d5 I4 s
{  a# Y' g, R4 n+ N2 ?
unsigned char Alarm_N;         //闹铃个数) p- B# u, L4 V5 M5 Z- ~
unsigned char Time_Alarm[3];
( q6 W+ O' L* p' C' P6 F0 _ unsigned char WeekDays_DATA:3;
# m8 \* w, H% l3 i// unsigned char
0 {: l8 ^3 r3 F9 B- G}Time_Data;
# a& B" q- c9 [7 R. W% M) }6 @typedef struct notify
8 P  X: K8 `2 H) W$ {- i{; u+ A$ U& k! M7 G# q9 O: b5 j
  uint8_t cmd;7 y! q& S" H8 C
} notify;0 Q7 r  I% X% ]/ ~
Time_Data Time_Run;
& \; [! m( c8 Z7 G3 f! A" ~, A4 y1 s! B7 U
static int isMqttThreadEnter = 0;% S% W% v- V' u
/*************************************************' U; V& q6 D: q3 C# E0 g% M
* Function:  2^N计算函数
% Q! F9 m) K: O& Q) d6 K * parameter  _" h2 q! y! S7 L7 O+ q
* Return          sum计算的结果
3 M3 |1 F; p1 \+ q2 Z6 E$ b% c" G: s * Modify:, |+ A" F, a0 y+ }( {9 o
**************************************************/
' X& u' k! w1 ]" V/ i, P. runsigned char Mult2(unsigned char n)" X4 Z& W* \& Z0 ^. E) `( Z, t
{
( q" O0 |0 w  c  D9 U/ V  unsigned char sum = 2,m;
! W6 R* K* U$ |2 h; s6 g  if(n==0) return 1;
1 b' a0 Q; F8 F! p3 X5 v" a  for(m=1;m$ E6 {+ ]/ ?: y: o, p1 x
  return sum;
& S2 P6 C0 e7 Z. v4 J0 M}) U) U, i# e* u% v: d( G
8 w) Y5 x5 |# O( r6 p
/*************************************************8 q3 o7 ?5 c! J+ t
* Function:  RTC初始化函数' A" y5 T/ o, o3 i
* parameter
3 ?: N, h+ S, T * Return
, t- X3 _$ X9 u9 w5 Y3 w+ l * Modify:9 V1 _3 Q; @. D) }, ~1 ?/ r
**************************************************/
5 t6 Q. o, N8 fvoid RTC_Time_Init(void)
- A0 U/ D8 i7 Q& D; p( @' p# u9 ?- B{
) @! T* {* M- K( Z' o0 {5 |3 i  cur_time.year = 17; //设置时间! P2 ]" f- M" I4 H9 D$ M3 c
  cur_time.month = 3;
) q3 ?' P2 t4 f1 M8 }8 o3 j  cur_time.date = 23;+ \+ d' c8 w! j! m  X
  cur_time.weekday = 4;
+ Y0 u& |% D/ @2 n, O4 V  cur_time.hr = 23;
* C  E9 v4 H  W. T  cur_time.min = 58;
, l, Y5 k' a3 d; f4 ~  cur_time.sec = 0;
7 Q3 J3 H% Q4 p: L; \  Time_Run.WeekDays_DATA =cur_time.weekday;4 l% p$ }7 h% q" J0 B
  MicoRtcSetTime(&cur_time);            //初始化 RTC 时钟的时间
. U% u* F+ g- g; J% C}* ^; U& |: s; V# _" t
/*************************************************
* g; E" R! G6 Y- O- L8 h$ C# c' U * Function:  RTC时间允许读取函数+ x) c1 ^/ W# c" t6 {
* parameter
9 D, K2 {) j; u) w1 S, n * Return- E; L& \6 ^  q; t, U  ?
* Modify:, e5 d/ O. S  z' z/ F! q) ?
**************************************************/0 |" m" _$ p# w$ |& |7 D" h
void RTC_Time_Run(unsigned int arg)
' ]- R8 i; v- ~$ O5 ~' ^& J! A6 {; ^{) X1 i$ o1 `# x: d" x  A( {
  RTC_Time_Init();
6 L8 s+ e0 i0 `; M$ s while(1)% U; M1 N4 l& K- T- ]
{
$ T$ u, o( A3 b) P  MicoRtcGetTime(&cur_time); //返回新的时间值2 E  Y- w: e2 _8 r
  sleep(1000);
3 F% x8 Z9 ~# ^1 b$ V }
9 m. w7 m7 v- \! K! b- A}( r+ X& O# X+ G" n9 ~+ ?: n
$ S( I6 e$ {& i8 M
: h2 w9 i9 g( p# L' e
static void micoNotify_ConnectFailedHandler(OSStatus err, void* inContext)
$ q+ }# i/ Y' b" p6 L{
/ ]3 _1 n& `% C* d2 N7 y5 s  wifi_station_log("join Wlan failed Err: %d", err);
3 \/ i! N2 s0 f! ~4 ~" e+ }9 y$ X% n% ?}
! N+ Z0 C; x" A0 G# R
/ M5 b" y& T8 D) A0 O/ X5 Ostatic void mqtt_proc(mico_thread_arg_t arg)! {6 k2 ~$ ^8 \. x% ?
{& t; O# c0 S0 }6 y! d
  wifi_station_log("start running mqtt_proc thread");! X- H) _, F+ p" z) u# k6 ^9 J
   //easylink_extra_data;/ n. c- ?- a; G' t) m1 k
  mqtt_client_demo();
/ r) ^2 \% C' s9 O9 @/ `/ U  wifi_station_log("end running mqtt_proc thread");
/ F& Z5 E7 I& G  {. {; _1 A& I$ F8 U  mico_rtos_delete_thread(NULL);
! [% n  c5 q0 X6 o$ t+ x- g}$ Y6 T, i+ G* X" z. h" z1 |0 `4 h
6 O! X  I3 l/ v
static void micoNotify_WifiStatusHandler(WiFiEvent event,  void* inContext)$ w" q+ s" M! B8 c5 s: B
{
* P1 M0 u2 S" [$ @1 d. N  APPD = 1;
- m7 a( `6 {( _2 j  switch (event) 4 y2 b# n' D6 ^3 v7 m
  {
* w5 q7 ~, {6 U* I* U4 {* k- }# v- M+ E  case NOTIFY_STATION_UP:
& k- z! A3 G" T5 z5 E; ^    wifi_station_log("Station up");1 c4 Z) G7 l! [- D( ]
% F  T8 p% p% p+ L% W( i

: n/ }7 J2 L3 I1 ]  //  wifi_station_log(da);
8 q5 M- b1 ~" K( D$ J  b/ i3 K    //aliyun_iot_mqtt_network_event_callback(ALI_IOT_NETWORK_CONNECTED, NULL);8 J- o7 y9 G  F
    if(1 == isMqttThreadEnter)
6 y0 x% ^" C/ E$ b    {6 }, u' v9 W# y5 E
      wifi_station_log("mqtt thread already running");
& `* y, }4 c* W* Y      return;
' a+ p, v- f# P! k& W, ]    }8 E) B* ]7 x7 f% s0 G
    mico_thread_t threadHandle;
& }8 l' ^1 z! R4 x- j/ K& g9 S    mico_rtos_create_thread(&threadHandle, 1, "mqtt_thread", mqtt_proc, 1024*16, NULL);
0 {2 N; ~1 s6 a9 N  G5 J+ u    isMqttThreadEnter++;6 x( y) I( y1 I/ j+ C; H. Y
    break;3 s' E% d# v6 j' z# v

! q8 U0 e' a& V; O* g/ i; L" B    break;
1 Y9 \: X* C7 l! F7 R$ U  case NOTIFY_STATION_DOWN:
- ?: j/ o% N9 L  T; x0 n    wifi_station_log("Station down");" g( K* p) Z; a9 o- Z8 ?4 e
    break;
; `( F; Z. q; V! A  default:& D6 F" I+ ]  L& |3 G/ q4 @- f
    break;' l, f$ `$ }' X: |2 x/ y+ W
  }2 g" H) H7 _" C4 L, Z/ j6 L
}3 q: B: q9 x% \1 L; d* Z
2 m- u7 \& }0 I$ E2 j# R1 V4 X
int application_start( void )
7 T! V- W+ v- Y  F6 f0 q7 @{ " J/ B% `- V1 H7 l
  OSStatus err = kNoErr;
; q9 s5 L# p3 k) u" b- M# Q  char str[10] = {0};  |: h( Q7 z, _7 [9 U6 n
  unsigned char sssf[2]={0};
# m- Z$ F! o9 b( j//   mico_thread_t t_handler = NULL;/*线程句柄*/ 8 ]) J7 x1 w) {; I; o6 o, V: d
  MicoInit();
3 M) V8 [( s: Z" I0 q' M% f1 h' g
  AT24CXX_sensor_init();//初始化I2C1 v; U: ?- u: I! `8 Z8 [- a; d
  /* Start MiCO system functions according to mico_config.h, # d/ @8 s9 l+ U- i7 u. C
     Define macro MICO_WLAN_CONNECTION_ENABLE to enable wlan connection function! M: O# b4 w5 u, K  V& W
     Select wlan configuration mode: MICO_CONFIG_MODE
* R- x! _) I( @, L; y3 n0 X. S     Define EasyLink settings */' B) y& R  U9 w/ B
  err = mico_system_init( mico_system_context_init( 0 ) );                      //
6 ^" x+ @. g4 P% u. i( i# w
# q+ Q4 s  g# `3 J2 d2 P  /* Register user function when wlan connection status is changed */
9 E- s2 K+ C2 N) V% Q* h3 ~  err = mico_system_notify_register( mico_notify_WIFI_STATUS_CHANGED, (void *)micoNotify_WifiStatusHandler, NULL );
9 R5 o) ~8 {/ v$ ]" D5 b1 B! h9 `7 g
  /* Register user function when wlan connection is faile in one attempt */6 c* a0 Y  J# Z! S( x
  err = mico_system_notify_register( mico_notify_WIFI_CONNECT_FAILED, (void *)micoNotify_ConnectFailedHandler, NULL );0 ]6 b- i8 ~5 y/ a& s8 |1 n# U# j2 J! N
9 ^" b) T: p! C) K: s# M1 [

& Q7 g0 K; w/ B- B( V4 B      err = mico_rtos_create_thread(NULL,MICO_APPLICATION_PRIORITY,"RTC Time Run",RTC_Time_Run,500,NULL);//创建并启动一个新的线程
* @' ?, [% Q2 x. I3 Y2 l+ d4 o
# e$ O( _; w" O3 j* c6 W  t( z  ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");/ J0 C, k& D+ q* n; ~% X+ Y& g

+ W" K' a! A7 z" Y: \0 [- Q9 B) u  /*LED1初始化*/, _5 X0 J6 C/ N4 Y
  err = RUN_LED_init();
- d; o  X( W% f4 I9 s" I. E$ c! F& n% o) c9 I1 o2 m: K+ M( E, x
  /* 初始化 直流电机 */
: ~& t# F) f& Z% D" n//  err = dc_motor_init();
' y* z3 X5 P& ~, U8 ^9 V2 q
0 Y6 Y8 B7 J0 N+ r7 E3 b# E1 ]$ j& e1 C, ?" v
  /*初始化 温度 湿度*/   c. r" n5 u. a6 Z' ^3 v. V1 L
//  err = DHT11_Init();( f; }, p2 y  l7 j# V: ?* i' i
  AT24CXX_Write_RegData(0x00,0X55);
/ V# @* ~5 n; b$ X//  AT24CXX_Read_RegData(0x00,sssf);
1 S! j  u' w$ [" i* t  APPD =0x55;//sssf[0];
( A$ g( w- g7 `3 f) V8 t1 h0 _  ext_rgb_led_log("%d",APPD);, Z1 ~6 Z! c% f3 o! `/ ?' Q. p; T. x
//  sprintf(str,"%d",APPD);; j  m; w' H" |( g% A# h8 N! j' Q. r
  /*初始化 光发射二极管*/
8 G3 n2 Y( C, O) U4 Z1 Z" n9 f: h# s  OLED_Init();
8 U+ G; a& K1 ~" v# f& s$ N6 {  OLED_ShowString(0, 2,str);
( E0 `# q2 B/ ]  z4 x; U- F8 F, x% b* G( p) F* }* g6 R, N
  /*初始化光强传感器*/
/ y& ^" I! F9 ~) g) I//  err = light_sensor_init(); + a) P: x# a( m! ^4 y

8 e9 h3 k* w$ T6 ]  v; ?! f  /*按键初始化*/4 c* m1 f! W5 ~3 V" R8 p, q9 h( ^- H
//  GPIO_KEY_Init();9 C/ p: Q# I4 V; }# ^8 Y

. V2 Q3 ]$ E$ t: {
5 }) h; R, {  p  mico_rtos_delete_thread(NULL);
' F, [& O) s. v7 Q+ }5 s& j  return err;0 a& `7 z9 W9 y" H4 ~
}+ u6 J* T: |& c  J& u+ y: R- V
6 v6 H0 t# f$ C
5 f, H& k  U" I7 s, _, U5 @5 k

9 [# y5 ~& a4 F; Y! r2 E  n. U: p' |
, Y& n+ S, d) X) H' X- t
I2C

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2024-10-7 08:44 , Processed in 0.485833 second(s), Total 39, Slave 27 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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