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

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

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

" s2 X: E: |' N7 c2 e//////////////////I2C部分/////////////////////////////0 `7 h4 t; |# [. W+ c
/**% t$ \0 F# X" h! ]5 u
******************************************************************************8 S) J% {4 o5 V2 U1 `' P5 y  q
* @file    apds9930.c; J) A8 w6 T' S* _- i
* @author  William Xu
- w1 r$ a6 H% J+ f# Q" Y2 {9 } * @version V1.0.0
2 P4 N6 {2 D) x1 b: z, Z * @date    17-Mar-2015
1 y- v. I- K  j) L2 {1 c * @brief   apds9930 user controller operation
  B" o/ O! q1 e) U( j& v ******************************************************************************
5 Y0 r7 G9 V# Y8 G2 c9 s *  UNPUBLISHED PROPRIETARY SOURCE CODE- V- q, W6 b6 F* p1 N5 q
*  Copyright (c) 2016 MXCHIP Inc.( n7 {/ A9 R  A# x
*
6 ]1 U* A& [0 }1 x; G/ i" N: w *  The contents of this file may not be disclosed to third parties, copied or
' m( @4 Y) S& @7 M2 g *  duplicated in any form, in whole or in part, without the prior written
* @! J# J% }4 e) t( J$ _! Y' g *  permission of MXCHIP Corporation.8 i+ R$ P/ w5 {: h% O) b6 K/ B9 L
******************************************************************************
  l) k! P# L3 i1 x  l8 I$ e */; Z: T4 O$ a9 ~9 p; k  M; z; G

& ]* j4 ], w# b) u" v

) w- Z% l$ q* m" B# e3 v* d#include "mico.h"
$ Z! {; T3 c- }+ E4 d#include "AT24CXX.h"
! Q2 M; n1 {7 m& r
) V# {6 u4 i8 @1 E2 a  G, B4 E$ t7 i
' i6 |$ y0 |- o8 T1 v. o/ T
#define apds9930_log(M, ...) custom_log("APDS9930", M, ##__VA_ARGS__)
5 u; k) p' V. a: f" l1 H8 a; ^& u. ^# I5 k  p

- C9 v% V1 a4 d7 o1 l# h, w/************** I2C/SPI buffer length ******/
; D* Z- |$ p$ I  u: i6 O$ m, H3 Q#define        AT24CXX_BUFFER_LEN 3: d+ k, A: P# X1 h
#define AT24CXX_ID   0xA0
( S4 v! P8 K6 z& d
% K, A1 O* Y, }" I; G
9 p( p% `5 T2 X* r  Z
/* I2C device */
3 A; Y6 |/ U) {mico_i2c_device_t AT24CXX_i2c_device = {
4 G( ~  g) H. K- C; i6 X$ I  AT24CXX_I2C_DEVICE, AT24CXX_ID, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE
$ l+ T; |% @8 p2 j( b2 D6 Q# x};
  {  ^1 p( `5 cmico_i2c_device_t AT24CXX_i2c_device0 = {
% B4 x& G3 y4 z0 G  AT24CXX_I2C_DEVICE, AT24CXX_ID+1, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE
4 l) Q3 l" a6 R# v8 s' |  z! g};
- t/ q( d" j3 s9 o% l/*************************************************
9 X0 M6 p$ l; ~/ A& d * Function:  AT24CXX_I2C写
* @0 _% K8 H3 k; `' V. R* parameter:  
- L# d4 N: X" a' u6 W: d) G; Z- J              uint8_t reg_addr          地址   5 u+ H9 x1 {9 t5 ~* H
              uint8_t *reg_data         参数- K: W" ^% N; x7 c
              uint8_t cnt               个数
9 P1 q2 }* L( `  s" f$ ^ * Return  :  返回05 _; b( \. P3 w) }) e6 \8 a" Z
* Modify:
1 a: Q8 M' w* n**************************************************/
* X) C8 B, l4 B; H8 i  UOSStatus AT24CXX_I2C_bus_write(uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt)
/ S; K8 o5 o; c* M, N( J* B{9 t, m, |; {2 t$ _: Z% ^
  OSStatus err = kNoErr;
7 \4 w% f5 O3 R5 g4 Q  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};, H& ]+ g. z! F6 s
. F6 e8 O: G: O3 v% i
3 u( B2 j  y" o, ^' |
  uint8_t array[AT24CXX_BUFFER_LEN];5 Z) G5 c0 c  F% I; ^
  uint8_t stringpos;
, t) W& }) h! ^  array[0] = reg_addr;: w" y' c# {( E+ @/ W0 }8 C
  for (stringpos = 0; stringpos < cnt; stringpos++) {
9 |- u! M# w# `3 \: n. f          array[stringpos + 1] = *(reg_data + stringpos);7 a) `3 ]5 ^( g/ ]( u' _. D4 q
  }# l5 l8 r7 T! H% d
- M0 l7 ]' C2 ^! O

) L# B# @# a  d* S  err = MicoI2cBuildTxMessage(&apds_i2c_msg, array, cnt + 1, 3);4 _; H" q! J4 m( _# k, a  K
  require_noerr( err, exit );
; z) i( Z: M# i6 ~  err = MicoI2cTransfer(&AT24CXX_i2c_device, &apds_i2c_msg, 1);
: N, s& m/ T/ Q3 G  require_noerr( err, exit );
2 M( t- I, U  @8 B/ c+ g( A  ( [, P3 o/ A6 W9 r
exit:  
4 B# a- g; ~# I, x  }, H  return err;
1 N% q/ [* I1 j. Q3 @5 ~& ~}7 u) K" ]: m3 h0 L
/*************************************************
: N+ x- p, O* o0 \ * Function:  AT24CXX_I2C读
' t" Z& @7 D2 k: S2 {* parameter:  5 U$ V' W0 ~- C5 ]' J
              uint8_t reg_addr          地址   
* R- K6 z7 }! G& R" u              uint8_t *reg_data         参数, P2 k, k! @; F: a9 m7 |
              uint8_t cnt               个数
1 G2 z& T' h! I  g3 S * Return  :  返回0
5 I) l) p1 r" q3 w * Modify:
* y  T9 d  c. A**************************************************/
% A# i' d8 k! C& e7 P9 p" T8 Q% QOSStatus AT24CXX_I2C_bus_read(uint8_t *reg_data, uint8_t cnt)
( Z0 ]/ }: I3 J) ~2 G/ R{7 B$ }( n# O( ~) P
  OSStatus err = kNoErr;& p: r1 c$ P( @( r
  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
: X: m& T- L2 m6 L$ s; Y3 p
4 g7 W' O. V# n/ ]% ^9 Z

+ ?4 x3 P7 o6 W; @  err = MicoI2cBuildRxMessage(&apds_i2c_msg, reg_data, cnt, 3);, O7 K1 l* o! @8 Y1 t: s3 E% }
  require_noerr( err, exit );
7 A6 S( h! T& P* k2 Q  err = MicoI2cTransfer(&AT24CXX_i2c_device0, &apds_i2c_msg, 1);* `4 y8 b$ }( Q% F* ~
  require_noerr( err, exit );
8 m4 N+ T7 n. g6 ^& x8 ^' J6 s1 S  Q0 H! D  [0 |6 J# e! g
9 [2 R2 l+ y' F, S+ S
exit:5 c9 n' `1 B9 y7 q
  return err;/ T" g$ ~! \: c7 p" P" h
}7 s/ |: L- p+ w' U2 @2 ^1 _
/*************************************************' W7 k$ M- Z4 P4 f
* Function:  AT24CXX_I2C写一个字节" N6 P, H5 p9 _4 o1 X2 {
* parameter:  * e4 |" a9 t* V  c
              uint8_t reg_addr          地址   
0 a* U; h8 \9 v8 X1 L1 I0 e              uint8_t reg_data         参数- d* H8 o, {& O  H: X
* Return  :  返回02 s' V8 {$ A; I3 M( j, k, |* v
* Modify:6 ^0 O' m3 e: G9 |4 H3 Z
**************************************************/- {4 k4 `0 C* c
OSStatus AT24CXX_Write_RegData(uint8_t reg_addr, uint8_t reg_data)6 V7 u4 D( g1 q9 K/ d7 F" Z
{
& L) j- u2 S8 h  H OSStatus err = kNoErr;6 Y2 G& r% d  ~# Z, e1 j: f) a
err = AT24CXX_I2C_bus_write(reg_addr,®_data,1); 6 p& y+ S" @! t, H
  return err;3 h& `* t% W8 b5 ?: I
}
! w) n( x8 N, J3 C5 s) H/*************************************************
# l' e3 a9 v6 y$ N( ] * Function:  AT24CXX_I2C读一个字节  r6 K4 T* j: K7 B0 V
* parameter:  
$ y; U4 h) ^" P6 r/ g              uint8_t reg_addr          地址   , f, |  e" }/ q: f
              uint8_t *reg_data         参数, E) s  U9 m# w0 U
* Return  :  返回0
% T8 a. e; d1 W4 s * Modify:
- J9 @5 t( j" R**************************************************/
* u+ _# n: Y+ g) b- z! W" g. ^/ i8 bOSStatus AT24CXX_Read_RegData(uint8_t reg_addr, uint8_t *reg_data)
9 H1 t5 e3 @& |( l9 N0 D{/ ?( u- m7 M9 m/ a0 p7 f) R
  OSStatus err = kNoErr;
! S. E% S$ Z" F" Q" _  err = AT24CXX_I2C_bus_write(reg_addr, NULL, 0);
: t, [, y* t4 E. P  /*Should have delay time here*/
1 h% u5 P- s9 W  mico_thread_msleep(5);2 Y  H) t5 E4 T5 v% c9 [& {
  err = AT24CXX_I2C_bus_read(reg_data, 1);
2 ]/ O) b. R; j* _: h  return err;  
4 R# U4 h9 W( D! F4 K, S& C$ |}" _, @+ n3 w' l
/*************************************************
% S+ N! x# j9 ]  c6 d7 m# G * Function:  AT24CXX_I2C读一个字节
( F$ G* n% ^4 m6 B6 u1 C1 `$ D8 ^* parameter:  
* u- N" i  U5 U9 g& P' |1 Q. F              uint8_t reg_addr          地址   
5 y) N$ J- J( e- {4 a) t8 q              uint8_t *reg_data         参数
1 ^# y0 {& |/ P* n9 z. v * Return  :  返回05 }0 i& U$ V. a6 W/ U! z/ q
* Modify:
- a/ H3 p# I6 x**************************************************/
( b4 X. B. ?+ k. j; Q  q# p//OSStatus AT24CXX_Read_one(uint8_t Write_addr,uint8_t Write_Data)) ]9 R3 o, s$ d( I' b6 {# U0 Q8 b
//{. x2 F1 \- R: ~- n8 O; @* P% u
//  OSStatus err = kNoErr;8 E; ]8 @5 R% v% h8 k; `
//  err = AT24CXX_Write_RegData(Write_addr,Write_Data);9 V* S& H: l! `7 e
// return err;$ I" h3 V# {1 o
//}/ @: f+ _2 _/ |/ c: }: q
' q" D6 W/ X6 ~5 K4 c# m
# Y+ {8 H# w+ y; ?  B
OSStatus AT24CXX_sensor_init(void)
9 g) y3 U7 ~7 y$ d3 W6 Q{
* g: g0 M0 k; M! c3 j7 D; D% S  OSStatus err = kNoErr;  @/ J6 ^+ p8 R- X& e3 X6 \
//  uint8_t device_id;4 ~' s" G) x5 Q$ N: D! c
  * }8 f# ]( S+ ^& f4 L0 w
  MicoI2cFinalize(&AT24CXX_i2c_device); 7 S/ X) h3 t' p- @, j. f$ d) Z5 b
  
, B  c; e- L4 J+ z  /*int Si7021 sensor i2c device*/$ b0 z- a; U% p7 ~
  err = MicoI2cInitialize(&AT24CXX_i2c_device);- s2 R. P* I, B! p! b. y4 D
  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cInitialize err = %d.", err) );. i3 @! W' z1 |" ?) C6 n& v
  ( Z1 w3 d0 C; M. h  z" c, ?6 w
  if( false == MicoI2cProbeDevice(&AT24CXX_i2c_device, 5) ){
1 d% I. |: T0 S' i! x* w  ]    apds9930_log("Si7021_ERROR: no i2c device found!");
# l( i* }" n. b8 ]3 |4 i0 f2 X    err = kNotFoundErr;2 w+ D: h2 B, [) n& t2 |5 v
    goto exit;
! Z: c  s- p# g3 p( A  }" t4 n  R& a, ~8 C6 v
        else3 z# Y2 c( u6 |4 w6 ]) _3 p; p
        {
8 l2 \3 E( ?0 l9 l- K         apds9930_log("Catch I2C device!");2 s" U: L7 [1 t, h5 m9 H3 |% G
        1 C$ c; E: H- W1 |5 k
        }  
: x) J( y/ G  A- \% e4 P5 Uexit:9 Z: U! F/ a( f0 M/ W" A
  return err;
. M0 _% v. S6 C7 {5 N}) H0 r/ J% W( T, p# f$ f% ^

8 c: g* j. b6 Z) T$ p  A  a

/ h! C$ y* a0 u5 x4 M6 u$ z3 Y6 L. o9 ]
+ `. M! Z0 G" y" c  r; t9 Q0 Z
OSStatus AT24CXX_sensor_deinit(void)* g, f0 i& f7 J! K
{
8 a- ~* ~  a9 H6 L3 `0 l" F  OSStatus err = kUnknownErr;
6 d7 p& `6 k& P% b/ C  
6 Y  ]; i9 J) t% `  err = MicoI2cFinalize(&AT24CXX_i2c_device);+ ^2 A! n9 a% A8 X6 T% I. p
  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cFinalize err = %d.", err));
. T" ^! D: ^, C* ?, E/ [* \  
: Z4 P/ w5 q& u* s0 q1 Jexit:
# V" |0 p- v# j4 }% E% B, J, W5 a  return err;
6 z7 g% E5 x$ q7 |}7 I7 n$ W$ Y+ H- T& g
//////////////调用部分/////////////////////////////  Z! Q- G; \/ M, h' o
# ^1 N0 d. Z$ D# b( N0 s
#include "mico.h"
' @0 \: J4 ^; W#include "micokit_ext.h"
4 f0 m/ @% y; l6 y# {#include "json_c/json.h"
- R! q5 ?" ]  E#include "sensor/DHT11/DHT11.h" /*温湿度传感器相关头文件*/
2 u3 B# x& k5 ~! v- u
! Y  x' q# E: ]! V7 r0 c% P* D6 g; R' h+ R0 D; S, i
#define wifi_station_log(M, ...) custom_log("WIFI", M, ##__VA_ARGS__)- \4 H9 d- ^6 e4 P! |7 b0 m
#define ext_rgb_led_log(M,...) custom_log("EXT", M, ##__VA_ARGS__)' e( ~- x: v$ v, [- r' s, w/ n
#define COLOR_MODE RGB_MODE
" _1 q6 M6 V7 ^. v5 a+ y2 G2 Q8 v$ c
! M8 ^+ h2 e' N( a$ T
mico_thread_t t_handler = NULL;/*线程句柄*/
) `9 f0 U/ e# f$ K! Bmico_rtc_time_t cur_time = { 0 };
9 }3 {; c3 Z9 ^! a! o' n# tunsigned char APPD = 0,SDD=25;
0 E8 F+ ~5 |  K! c5 Mtypedef struct9 `$ A* B9 B+ k% l# t
{! z& i- z4 V+ ]
unsigned char Alarm_N;         //闹铃个数
9 {! z* C5 o, u$ S$ t' ~  P6 @ unsigned char Time_Alarm[3];
! ~! ^( K- K  j5 f  s! `# W6 i. q, N unsigned char WeekDays_DATA:3;  R& E) B, @, K0 q
// unsigned char $ I3 Q, l/ P8 }/ J3 j- {5 p
}Time_Data;
' R' K: m0 T/ c! Atypedef struct notify% `) h4 [2 a* J' v6 m4 b- T7 s+ z
{* [9 T# N1 n% D* |9 j( Z6 n
  uint8_t cmd;* n7 u) [3 L) E0 e; ^
} notify;+ {, G) m+ n/ j  x! R4 u
Time_Data Time_Run;( q, @/ t+ o- c7 Z" @

" X1 M4 j8 n  a+ ]1 P% Tstatic int isMqttThreadEnter = 0;. C1 f8 q5 j. P4 d; P! x0 g5 S
/*************************************************
! P. }4 h% L: e# c * Function:  2^N计算函数- S; i6 I% L2 n/ s9 x1 t: {+ G
* parameter
9 {' q9 c' j* l" c0 O. Y7 l) ] * Return          sum计算的结果# a( [! m- a8 y# R+ z2 [  p* A7 V
* Modify:
8 y( [% _* ?+ p, F) U/ l- f0 n**************************************************/: A/ y* N. j# z
unsigned char Mult2(unsigned char n)
- A: n" o$ s4 F{
) }8 ~1 w2 y- ^6 E  unsigned char sum = 2,m;# y" e$ ]! P" Z$ G
  if(n==0) return 1;' t1 s. U9 v/ L+ N. [- g# K( O; B
  for(m=1;m- Q3 d, P9 q( l0 F$ j
  return sum;" q( z7 c* J6 s3 t
}, H. B# X& t# D1 t7 z

# l4 g2 |2 q7 E3 Y4 l/*************************************************
# N0 u* H' S1 m2 h- t; e* \3 M * Function:  RTC初始化函数! g6 ^2 `5 \4 f% v
* parameter! W  B# {$ U) Y0 m% q, e; Y
* Return
* H8 p; ?$ D* C, M * Modify:
, ?) M6 e6 R! [4 }& u**************************************************/
( k3 U# {0 V- W0 e1 gvoid RTC_Time_Init(void)
0 C. Y1 x* H8 z, k3 H{# c1 A' [9 b3 Q& E& {8 K" B# H
  cur_time.year = 17; //设置时间- m5 R6 c) e5 H5 E" m- b( B
  cur_time.month = 3;: S5 S$ s! D$ K2 _) i5 g" s
  cur_time.date = 23;
! }. C# I) s/ Z9 H( y7 A, ^  cur_time.weekday = 4;2 e1 D, B1 i9 e# h( B+ A
  cur_time.hr = 23;
9 r' J$ b" r- v( Z/ |  cur_time.min = 58;
, @3 D+ J6 F7 t, {' E. j  cur_time.sec = 0;/ Q. Y3 w. z( [% W* p$ b
  Time_Run.WeekDays_DATA =cur_time.weekday;8 Q# y1 W9 R  _( T2 A2 J
  MicoRtcSetTime(&cur_time);            //初始化 RTC 时钟的时间
7 ~8 d& {2 y9 K" k3 t}
0 p* o- t% `# y9 `% |- F6 w/*************************************************+ Y" F$ M5 V3 [$ |
* Function:  RTC时间允许读取函数
2 S' j! n7 F# t: A7 E * parameter
; Y. D8 g: i! |9 V: f * Return3 L& ~& ]# ]  e" p. V
* Modify:' Y* L, c. L9 K0 x
**************************************************/
* K8 e4 D8 B3 @void RTC_Time_Run(unsigned int arg)
- \- w8 q! b' x/ q3 _. \& ~{3 z1 \7 N! ~9 E
  RTC_Time_Init();
- t- Q2 k/ _+ X+ B4 T% x: v4 ~ while(1), L6 E5 ^( V: [
{
2 J3 x% ~  K6 o# X  MicoRtcGetTime(&cur_time); //返回新的时间值$ X" y  }( R* S, `
  sleep(1000);
1 _" }  Q5 }' s5 z/ ~. S }5 ^7 e% e0 j# \& }* o: s! w
}
/ R) p4 A5 b8 W8 r7 u/ H5 C& M( j7 r, s5 h0 x
! y- K: d" u. \* b$ h
static void micoNotify_ConnectFailedHandler(OSStatus err, void* inContext)
& c! K4 F5 M8 Z; c- O( h9 o5 {{
4 P8 b$ L* x+ e. P1 T3 j  wifi_station_log("join Wlan failed Err: %d", err);5 y* {# |5 t) M. I4 E* [
}* w0 O1 z! o# O) r- x$ m& J- @& t
1 |$ @0 A/ u8 l7 A& k, @" u
static void mqtt_proc(mico_thread_arg_t arg)1 n; v# j4 H/ H7 g
{
' c  P8 `6 t8 a2 b! j1 `  b. e8 ], o  wifi_station_log("start running mqtt_proc thread");+ v, W; N  u% I7 ~9 l8 n
   //easylink_extra_data;2 p& `; y# m2 O3 @& p4 e1 t& [3 p
  mqtt_client_demo();! i. k7 b, }) d+ T
  wifi_station_log("end running mqtt_proc thread");. t. K# E8 y- _. ?" U  i
  mico_rtos_delete_thread(NULL);* u2 k8 M6 _% D# n) P" _  H
}
6 E# k( t4 O( d' {7 v1 D: o+ G: }6 A/ Y: Y' |) E6 z
static void micoNotify_WifiStatusHandler(WiFiEvent event,  void* inContext)
, e" G& e, g# i* {4 ?{
, ?$ E/ y" l! k' g+ Y' D' K  APPD = 1;
/ e* o9 k6 ^+ c3 j: d: i$ L  switch (event)
" M& L  w! D7 r3 H  {
% P: @2 L5 L% i+ R- o* w  case NOTIFY_STATION_UP:
9 S# v: w1 [, o. |* k    wifi_station_log("Station up");
6 F, t$ j: A" ^' ~# @9 K3 m8 Y& B1 ~: b6 M: B
# F+ u) G, k7 _" A8 d* f( C$ O
  //  wifi_station_log(da);
. e# ^5 a# Z1 e  g4 x2 P    //aliyun_iot_mqtt_network_event_callback(ALI_IOT_NETWORK_CONNECTED, NULL);
- M- G* J$ H, _7 N) j2 w    if(1 == isMqttThreadEnter)# p0 |, \  n! r. \
    {
3 s* X% I# v6 D5 d* T  a* P  n      wifi_station_log("mqtt thread already running");
$ N$ c! x) i. W2 f* i+ Y- ~& b2 r      return;
3 @: V) n! b( n9 d    }
" T9 k- ]% d0 n' R( c- ^$ T3 {" ^    mico_thread_t threadHandle;
* |- p& e- [8 G  b) M* f; A5 h; ^    mico_rtos_create_thread(&threadHandle, 1, "mqtt_thread", mqtt_proc, 1024*16, NULL);" |, p. U& @! ?" @4 R6 L- q
    isMqttThreadEnter++;
& H: v# Z: g1 Q" J    break;
5 T0 B8 o1 y; i. r( G! y9 ^( p3 j9 A) H5 e! K1 w. B' v
    break;
% ^, u7 u0 W- u9 Y  case NOTIFY_STATION_DOWN:
5 F: Z  \: }4 l) a    wifi_station_log("Station down");5 |! c7 `( z. y6 e9 j  {! O
    break;
2 z# Z1 m( I9 j& s# w/ q! ?  default:
9 M  A$ P$ U0 j    break;
) D% b. r3 M: h" \" G  }1 |% n0 J8 K; w/ V3 ]
}: m2 S, V9 e* j9 m0 S: X/ u
6 P  ?7 \5 S% R: @" f+ ]
int application_start( void )- i* I# O  ]; [0 U: w
{
" ~5 Y" V; F' z9 x  OSStatus err = kNoErr;" N4 M5 r- W! w5 A
  char str[10] = {0};* G3 q: }% B$ }
  unsigned char sssf[2]={0};
* a7 t8 D  E! ~2 B/ S% D4 g//   mico_thread_t t_handler = NULL;/*线程句柄*/ - @* Y% N7 [& r9 |
  MicoInit();5 Z, @: l2 S! o. V  X& }5 M

* g: M7 n; S0 u, S/ ^0 l# j1 T  AT24CXX_sensor_init();//初始化I2C1 `) A$ P. @* i& Z+ G: l; M/ H
  /* Start MiCO system functions according to mico_config.h, 2 v0 z- d8 B& t
     Define macro MICO_WLAN_CONNECTION_ENABLE to enable wlan connection function6 F# ?* n6 S% \3 U8 B
     Select wlan configuration mode: MICO_CONFIG_MODE
+ @8 u- \; H* {+ y, u# E/ ]: O     Define EasyLink settings */
6 U, c: b; w0 s6 Z  err = mico_system_init( mico_system_context_init( 0 ) );                      //
9 P4 t( \  D! P% @/ y6 ^0 k. q$ N; K8 d1 `# K- V( z
  /* Register user function when wlan connection status is changed */
( g* i, G& W9 E5 R5 ^, G( ]* P  err = mico_system_notify_register( mico_notify_WIFI_STATUS_CHANGED, (void *)micoNotify_WifiStatusHandler, NULL );
9 Q$ e4 x/ p! S4 B! I  C0 U
5 D$ K( z" [& [  `( B  /* Register user function when wlan connection is faile in one attempt */
- [: |+ F3 t% \! a6 L4 W# l% ~  err = mico_system_notify_register( mico_notify_WIFI_CONNECT_FAILED, (void *)micoNotify_ConnectFailedHandler, NULL );
8 R& L- f; r3 O- Q5 D. y. I1 z5 g7 s& d. _4 ~2 C/ h
, b. q3 S: i9 T& D7 h: t3 z* w
      err = mico_rtos_create_thread(NULL,MICO_APPLICATION_PRIORITY,"RTC Time Run",RTC_Time_Run,500,NULL);//创建并启动一个新的线程
8 U& l2 x" {' n( A% H
5 ^% P2 B# F8 ^. t6 |( t* z( j; d  ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");
: }* X! j9 O: |. _1 A+ j0 ]0 C6 f
( F# A$ k; [8 B) [" P. i  /*LED1初始化*/
( ]0 a- Z& r* R" l  err = RUN_LED_init();
$ t" i3 B5 r7 \$ @- e0 Z1 L0 a6 W) a, F$ h+ z+ X3 O  b! D
  /* 初始化 直流电机 */
  J0 u9 y3 D) i3 m: ]//  err = dc_motor_init();
1 I! U" G% a3 q9 Q9 S* o9 T. h" A, d/ [6 D  ?
/ ?; C0 W9 k$ F' y% d6 a
  /*初始化 温度 湿度*/
' p: ~5 a( h( j1 M( b# o) v) x//  err = DHT11_Init();: E6 S3 V8 L" ~( S/ P" [4 Y& F, r
  AT24CXX_Write_RegData(0x00,0X55);
8 Q0 p9 r. ]; `6 E0 }5 N/ `//  AT24CXX_Read_RegData(0x00,sssf);
4 t  V# ^( c% Y0 v3 ?! [  APPD =0x55;//sssf[0];   e0 W: e) z; o- x$ k
  ext_rgb_led_log("%d",APPD);0 H% {' F) v' _/ [9 f: s3 n
//  sprintf(str,"%d",APPD);
3 j& A4 r4 G$ {( V6 g  /*初始化 光发射二极管*/
* Z$ R/ x& }8 e- n4 {- a! s4 _# O  OLED_Init();8 e; k7 k2 B" C2 x$ b
  OLED_ShowString(0, 2,str);
' j! i8 }& g; a$ q4 s  y" _* Y) \# C: K' d! o
  /*初始化光强传感器*/ 3 R" w+ F2 j) [* N* z$ e% r
//  err = light_sensor_init();
# y# W9 {/ }! f* J# b5 o6 n5 U" v* z6 U* |$ Z8 X
  /*按键初始化*/
: Z, C# g' m) F//  GPIO_KEY_Init();7 d) X2 I* E: U3 o  f

8 e% U, _% p4 |7 K: k7 H+ o& S
0 |4 F5 y) ], V( ?6 q  mico_rtos_delete_thread(NULL);1 I1 C- C; U# h: ?
  return err;8 r3 Y( h4 x+ {" z& `# N* w
}
) W! M. q. c0 s4 A
2 ^6 P2 _- E4 ]; f( b  l. F* s. P3 g/ l: |  E

- Y+ t5 s! b7 N: H' {7 C. H
+ H( N& [. m! b5 K  O' X+ O
I2C

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2025-12-1 21:02 , Processed in 0.412722 second(s), Total 35, Slave 24 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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