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

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

许华 ( 楼主 ) 2017-4-26 09:39:41  只看该作者 倒序浏览
使用SDK自带的I2C去读取AT24C02过程中,使用逻辑分析仪看波形写入的数据与逻辑波形不对,写入0x55,波形显示不是写入值。谁知道怎么处理请帮忙看看我写错了吗?
) R  F/ |8 q4 Q+ f3 ~6 w+ x
0 M  y1 b& o( V0 _
//////////////////I2C部分/////////////////////////////8 J% Q9 {4 M/ I
/**- q/ n/ \" c# v7 @
******************************************************************************$ D' x  L7 C4 w  j" ^: M. ^; m
* @file    apds9930.c0 t( _* |9 I  `/ z. j( s
* @author  William Xu1 Z: T2 \+ ~2 \
* @version V1.0.0
8 o  Z& H) ~/ K* r- i0 r. f# Q * @date    17-Mar-2015. |0 \* n$ m& R3 u
* @brief   apds9930 user controller operation. Q8 S0 U( z( Z) Q: s$ u. I! U
******************************************************************************6 A! C) N- p" M
*  UNPUBLISHED PROPRIETARY SOURCE CODE
* ]1 Z2 t; I& `& W3 L *  Copyright (c) 2016 MXCHIP Inc.
" @0 w" t1 }! i3 q$ F *" Z! V( P% J8 Q
*  The contents of this file may not be disclosed to third parties, copied or2 P: @/ z+ r& x( c4 R5 Q
*  duplicated in any form, in whole or in part, without the prior written
: v. a) G9 h" i& m# K" b* F *  permission of MXCHIP Corporation.3 P# S( d! _4 q
******************************************************************************2 A& [' _" u8 @
*/$ r# G5 e2 U. J" \/ h# w
9 l  q1 i+ T7 U2 b1 N, {& j

8 J" I% h& V5 O: b! e#include "mico.h"
$ P. K: B! i" u* ]' e  P# h3 _#include "AT24CXX.h"
; b2 l# i# `. A+ k% H9 s# a. ]6 k# E+ h: l0 r9 k8 Q5 p' g8 k1 r
. l* H( R! d& X; e$ k% X
#define apds9930_log(M, ...) custom_log("APDS9930", M, ##__VA_ARGS__)
7 k5 o: @$ n% [- g5 Q% S
$ ]% C" w9 U3 K& S/ J$ ?
" _+ Q* m) I$ X! d( n* m2 m) ]
/************** I2C/SPI buffer length ******/
. I8 o4 y( E1 r2 P. D, a#define        AT24CXX_BUFFER_LEN 3
. N+ f9 T$ d& V* J& n! O#define AT24CXX_ID   0xA0 & W" x: ^( h/ q( x; i0 r- w9 S
, s4 w  K4 g! `; T% b4 A

2 Q9 g+ a9 e% Z1 r/* I2C device */
9 p0 Q& y0 f% _, b: A8 `  t- Hmico_i2c_device_t AT24CXX_i2c_device = {
  D7 r- m+ L+ F, X1 r" y4 Z9 D  AT24CXX_I2C_DEVICE, AT24CXX_ID, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE: h/ ^) s7 k5 x5 W
};
0 p) t1 z+ l( _4 f9 V0 Cmico_i2c_device_t AT24CXX_i2c_device0 = {8 T! I2 O9 B" f% D7 V7 y
  AT24CXX_I2C_DEVICE, AT24CXX_ID+1, I2C_ADDRESS_WIDTH_7BIT, I2C_STANDARD_SPEED_MODE# A7 j& c3 g# b  o9 H( L
};; q- L' I2 c0 V8 ^1 w
/*************************************************. G0 v/ w" i  r- I7 K
* Function:  AT24CXX_I2C写
5 R8 Z" h, J2 N1 o  g& z4 ^* parameter:  / Q* P" B3 U) W) K  g( x9 s) _
              uint8_t reg_addr          地址   
! D4 R2 v: Y( i1 i% Q1 y* B              uint8_t *reg_data         参数7 M# F% l1 O; b5 S6 ?, I' `
              uint8_t cnt               个数  K: z$ Y1 f; K; E
* Return  :  返回0
6 B6 o5 r) c- t' y5 R. z * Modify:
% s, A- P9 a% ^& w/ [" g6 o7 Z! ~**************************************************/& P: r: f# U( s+ R( v3 X
OSStatus AT24CXX_I2C_bus_write(uint8_t reg_addr, uint8_t *reg_data, uint8_t cnt). ^4 c1 ]- ]( \* l1 b2 N" G7 G
{
% Z: z' h0 a' @+ O. C5 F  OSStatus err = kNoErr;
! m- \  b6 ^7 g0 ~, Q& t4 N0 \4 |  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
" }7 V5 E% P& }2 n; Y  J) e
) F: |$ @9 i/ d
$ Y. \' a# h1 R* \' m7 ~
  uint8_t array[AT24CXX_BUFFER_LEN];
# l! {1 Q  ?' X" A  uint8_t stringpos;1 c# i$ s8 V% y0 c- G3 f
  array[0] = reg_addr;
" n& [9 G& p1 u; t$ K  for (stringpos = 0; stringpos < cnt; stringpos++) {
2 I( F' S7 I8 U5 _. @9 a9 c! }: o6 T! j          array[stringpos + 1] = *(reg_data + stringpos);$ _* R$ A9 Q0 H. K+ q: Q$ n3 |% R6 I3 Q( y
  }" k4 v) p9 _( x, u9 N* W3 A

9 ]+ Z6 c0 M# x9 H8 t
6 H3 e( i2 q4 h7 `9 ^! t3 H
  err = MicoI2cBuildTxMessage(&apds_i2c_msg, array, cnt + 1, 3);3 r4 L/ n% K7 K; x- K/ Y
  require_noerr( err, exit );
0 b2 G# {) {2 d( z7 ~& e  err = MicoI2cTransfer(&AT24CXX_i2c_device, &apds_i2c_msg, 1);
% R0 {9 k9 @3 x  z  ?+ Q- W1 `  require_noerr( err, exit );6 b5 w' Z; \% ~$ T
  
/ O7 M# q- i& q0 r& Fexit:  5 L$ V( J% D4 U, t* l2 o! b
  return err;
4 R! `5 _/ @- V; `' y* _" p7 u}
! g9 h$ m5 D: s, ?3 E- `0 W8 B1 m/*************************************************$ P* r: \/ `0 U+ D
* Function:  AT24CXX_I2C读& U3 {# w: N* O* A' [, K# o' m
* parameter:  
$ D" d' a3 w6 \% l% k5 Q& t6 M; ^2 d              uint8_t reg_addr          地址   
9 z8 W* V/ ^: d* N. ~4 K              uint8_t *reg_data         参数  O7 e+ O' ~/ U6 E7 {
              uint8_t cnt               个数
6 W% h) G  P: z: s1 w1 \) o * Return  :  返回0
9 t! @2 y% L& U) C9 b * Modify:' O1 t; I$ y; w8 j6 B) a$ ^
**************************************************/
, g3 l4 s, S0 m0 d/ |9 XOSStatus AT24CXX_I2C_bus_read(uint8_t *reg_data, uint8_t cnt)
) `# |. h6 T9 i3 s{
0 k) C" x1 s/ V$ n' S  OSStatus err = kNoErr;, S2 u+ {/ Y* L# Y" d
  mico_i2c_message_t apds_i2c_msg = {NULL, NULL, 0, 0, 0, false};
; r+ Z+ o& D8 g3 h' l/ m) `8 {6 r; B( Q

* z' a; f1 G3 O" x* v- L  err = MicoI2cBuildRxMessage(&apds_i2c_msg, reg_data, cnt, 3);
, o5 j7 L5 U2 S, m& H; O7 S  require_noerr( err, exit );
& Z6 @  |# b# y* E) P% U6 D# m: L  err = MicoI2cTransfer(&AT24CXX_i2c_device0, &apds_i2c_msg, 1);
7 v- d* z1 S: X. v$ Y- t/ I- ?  require_noerr( err, exit );
' ^/ H4 \7 W9 u& _8 Q+ p; R( \4 W/ M4 c# X
* c$ i$ E/ W9 F5 r& T
exit:
+ I: N8 u3 ~: [3 d& i  return err;/ U; Q: N8 D! y: a& _3 p/ V  Y* V
}/ m$ X* |# G1 S, l4 I9 q6 s
/*************************************************
& z) H: x: f4 P. v+ S' M * Function:  AT24CXX_I2C写一个字节
3 Z3 _( ^/ a* A' X* parameter:  & h  r) }+ f9 |/ k9 h
              uint8_t reg_addr          地址   8 @8 E0 e7 @3 j* [2 d
              uint8_t reg_data         参数! H7 ]9 T6 X- x+ ~* [6 m7 s
* Return  :  返回0& T3 O5 T+ s8 T% N
* Modify:
& t  u5 Z# J. m# m+ b**************************************************/
8 ^, s: ~! }5 MOSStatus AT24CXX_Write_RegData(uint8_t reg_addr, uint8_t reg_data)
3 f/ l. y3 C# z; Q  A% k# D# w{
+ q3 X' y" y7 v9 M  Q/ d* f3 w OSStatus err = kNoErr;2 d1 w- \0 u' R( i: m) @* \, q
err = AT24CXX_I2C_bus_write(reg_addr,®_data,1); 7 U2 R) T" J4 _. ~- M! J1 b
  return err;
" f0 Z( o' Z$ h4 X: q3 M& P6 Q- v/ A}
( S7 G5 G, Y5 C$ z/*************************************************' y& d; q5 t5 v/ H: e* c' e
* Function:  AT24CXX_I2C读一个字节" k$ ^5 i/ P7 m: |6 z& p6 ~
* parameter:  
4 r1 b; {8 t% ^0 W' e              uint8_t reg_addr          地址   
7 D* j5 }1 A# Q) _/ h2 L4 ]+ y4 V              uint8_t *reg_data         参数
, v6 I- C' H1 z/ _" r * Return  :  返回0) W' V" C7 }; z# A/ k7 r# Y0 j2 }
* Modify:
2 E! y# S1 l* w4 z+ J. ?5 d% u**************************************************/
1 q  U/ |, Q% G- \  LOSStatus AT24CXX_Read_RegData(uint8_t reg_addr, uint8_t *reg_data)
( v) m+ B6 B, C8 m7 [  U; w8 g/ I3 q{+ C6 R4 E  @5 Q, I4 @7 f
  OSStatus err = kNoErr;
* H8 g! R4 s2 q2 u' i  err = AT24CXX_I2C_bus_write(reg_addr, NULL, 0);& Q4 f( L! o7 X1 A! g7 y- ~7 O
  /*Should have delay time here*/
% s* V. t: M% V! J5 S. h' f0 q  mico_thread_msleep(5);
3 `. N' F$ ^; `" q  e  err = AT24CXX_I2C_bus_read(reg_data, 1);
% e* B8 N# ~) e! L9 v  return err;  1 P& R: h" E( ~0 V+ A( A
}
7 ?2 m# c7 I+ ^1 h& t/*************************************************
& [4 c9 |3 h3 G+ [9 Q9 O  W! k; N * Function:  AT24CXX_I2C读一个字节6 B. T8 K" J$ f; j. k1 P) A1 B
* parameter:  # T8 J: s4 D; z1 |: R, t
              uint8_t reg_addr          地址   ; b5 g. D* C. r3 M
              uint8_t *reg_data         参数
- R1 t( X/ Q' W8 ]& r1 d, ^ * Return  :  返回02 B8 H, J) _& B9 R* c
* Modify:
4 C) X" \* u& U- v) r**************************************************/
, r4 a5 V" @7 v$ }. i//OSStatus AT24CXX_Read_one(uint8_t Write_addr,uint8_t Write_Data)6 u4 k7 ~# G* ?3 W) _2 w  @2 `' }
//{
7 C, D% U0 z( r! @8 {5 Y//  OSStatus err = kNoErr;
# ~  C* B; C- i0 h: S//  err = AT24CXX_Write_RegData(Write_addr,Write_Data);
( n- a+ j/ n3 A! a. a// return err;) N' K: Q7 G: G' N
//}
, Z" }, s: c9 @7 J7 ?+ R' i# ?8 m! p" r4 u8 E% x7 Z

( H6 g, a8 ~  z  y7 V" C; lOSStatus AT24CXX_sensor_init(void): B; W5 I. R4 A" _) w6 l6 C  \
{# X* R. C7 C  c& f
  OSStatus err = kNoErr;
/ y: e. M- @& U, o$ f$ r//  uint8_t device_id;4 b/ c7 }- T4 V: |8 i
  
0 O) B( X3 g; F1 i- Q, d/ v% ?  MicoI2cFinalize(&AT24CXX_i2c_device); & K+ F1 u; _) c8 x* s' B7 v% g
  8 s; ^2 ]' l" ^/ C9 k# V
  /*int Si7021 sensor i2c device*/
2 K. k4 h& a" ]0 O0 P  err = MicoI2cInitialize(&AT24CXX_i2c_device);
5 ]* S* W0 y, U6 w& u  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cInitialize err = %d.", err) );
5 u0 K2 I" f. U& Y  / m9 G- N4 h2 ~7 h( i
  if( false == MicoI2cProbeDevice(&AT24CXX_i2c_device, 5) ){0 [) p3 O3 g& o. y: T, I$ p8 h
    apds9930_log("Si7021_ERROR: no i2c device found!");9 R, i( q1 Q6 Z8 B' I7 c" J) K
    err = kNotFoundErr;( n: k! z6 `, b- S  d
    goto exit;" J4 U2 f) ^" C& {
  }( w3 p: c9 x3 ], e. B7 r$ F
        else
. H* L: A* |1 ^! }9 ~        {" g  N% ]1 x: j( i
         apds9930_log("Catch I2C device!");
' k/ q4 o5 k5 _; J, {. l: l( h        / B  e9 D6 s8 V# W
        }  
1 P4 I% {: t* |0 p, x' _7 Vexit:2 O8 L+ H9 b4 w
  return err;
3 c( S, A6 u3 C}
9 @2 ?  X$ [3 t8 ~% n" I, \- \) ^  V6 c1 G! z
1 {4 u- g, H, C$ R* s; {0 V8 c

! ]8 {7 W4 D5 N) i( ]
/ a2 d) u& O% a  k
OSStatus AT24CXX_sensor_deinit(void)& ~! H, F6 n  J  V" k. [. K! D$ C
{
6 f/ L$ X4 ]" m6 M2 s  OSStatus err = kUnknownErr;6 G& C$ V$ b6 v5 A9 U% b$ }' y
  
1 P4 ~% R% z- T! x. J  S$ Z  err = MicoI2cFinalize(&AT24CXX_i2c_device);
9 h' r" T. X6 X& W  require_noerr_action( err, exit, apds9930_log("Si7021_ERROR: MicoI2cFinalize err = %d.", err));
6 O0 A/ t9 B% D- N+ P' \' s  
6 R. k2 V8 s; N6 M/ ?exit:. O3 t, o. }9 p- e5 x+ b' f1 C% a9 O
  return err;, y4 V7 ]& f: U& n
}
! ^- z. r- j7 g. f! h4 w: g9 C- j//////////////调用部分/////////////////////////////* h9 d$ F2 H) |2 M2 G) u' r* ?
# u0 C/ A9 d( s1 B, G/ m: x
#include "mico.h"
  V; E* C" S/ E4 W- u#include "micokit_ext.h"% k4 X: b' O) P/ N# Z) v1 _% }
#include "json_c/json.h"4 ~) V1 ~0 [9 b% d8 C1 e6 N
#include "sensor/DHT11/DHT11.h" /*温湿度传感器相关头文件*/+ F( T: i5 C* I. C8 ?/ I
7 F$ N! O, q. m5 T

/ E$ [6 d1 J% e& b' D#define wifi_station_log(M, ...) custom_log("WIFI", M, ##__VA_ARGS__)
7 x' D) ?6 X1 ^; ?# ]; A' ?#define ext_rgb_led_log(M,...) custom_log("EXT", M, ##__VA_ARGS__)
0 b: ^. A4 q2 M4 d4 P" l#define COLOR_MODE RGB_MODE/ M) b; S; d) E) a* A( h: h: S

$ |" c) X- j. \% {2 ]9 a5 Z3 M1 E. Y
mico_thread_t t_handler = NULL;/*线程句柄*/
- b  @2 z5 P$ }9 f- Y' G* B3 fmico_rtc_time_t cur_time = { 0 };5 v4 {0 G+ d- x# R, R
unsigned char APPD = 0,SDD=25;( }: o" C1 B: S& T
typedef struct
/ X0 o, [8 k! Y6 Z7 s1 Q{
6 ?- z% s# N5 F( b: [. F unsigned char Alarm_N;         //闹铃个数9 L" }5 Z* F" M6 c6 F
unsigned char Time_Alarm[3];8 O0 R0 k; j# W9 p. S% ]+ a3 A4 ]9 Y
unsigned char WeekDays_DATA:3;
. l7 r+ m  E/ {, q5 b// unsigned char . j, ]! b. t5 O2 n" F& v( |
}Time_Data;
& |: i, v4 q4 R2 p; S$ _# Gtypedef struct notify8 q+ ?% M, N" j! P6 a/ d
{
' t# S/ R1 s0 ~- H  uint8_t cmd;) a* ^9 [/ a4 j0 C% r( j3 R
} notify;: i% V; i& U  ?8 L$ w
Time_Data Time_Run;( ?/ F7 B8 X3 ?

6 }1 d( S  A% m* p& h$ Fstatic int isMqttThreadEnter = 0;/ U( B; `9 A3 m
/*************************************************0 W- Y2 N4 d2 P5 _- R
* Function:  2^N计算函数
+ n/ G# p* N* j8 `4 G: y' C" W * parameter; d2 H+ L- s9 R2 Z$ D+ E+ T! k
* Return          sum计算的结果
' y- A& I8 e& J* M& d: k) z * Modify:4 _& l/ A9 E: z/ Z( c& O
**************************************************/
% e5 p% {2 x& B6 i' q" }- L; {. Funsigned char Mult2(unsigned char n)
: }3 @; N( }* H9 I/ b6 W0 r7 c! B2 h" M( u{
5 \0 G9 t; f9 u# ^) T  unsigned char sum = 2,m;- }- c. a; [8 Y
  if(n==0) return 1;( G* P) r$ ^) @, R. N3 s
  for(m=1;m ( q/ o& q( I) E  return sum;" d7 J. }9 |2 n4 j3 x
}) f: q6 n  T7 m. |0 f- Y
/ Q. ~; O1 d5 o7 {& g3 ~; z0 ~
/*************************************************
" A# m" C: H! A" J0 @) q: q; _/ c( R * Function:  RTC初始化函数' {- T( [5 Z% c
* parameter
. Y! N/ S0 L/ P: ~4 R$ C * Return+ I- Q& z: q! K; M/ p* `  k
* Modify:9 m% I* |" R$ a/ T. G* P3 i; e
**************************************************/
0 }. j- ]) m; v& Uvoid RTC_Time_Init(void)% u, \4 A  _+ @+ O) y
{5 j1 v) [. g$ U0 J: X0 C
  cur_time.year = 17; //设置时间
& q: T) j* y; ^' g! L+ ~  cur_time.month = 3;
* n- l* Y! C% u* R" Y% y5 Q  cur_time.date = 23;
. v1 |3 i8 U) n4 S/ |, K  cur_time.weekday = 4;
0 H4 a) Q) Z) J* ^4 d) [5 i+ T& Z7 U  cur_time.hr = 23;
. j+ t" e- ~" P. |3 X  cur_time.min = 58;
* V% U6 k$ U1 T, C; ~0 K% ~  cur_time.sec = 0;# C# E) K5 K: O; c/ S0 p: C1 |- e
  Time_Run.WeekDays_DATA =cur_time.weekday;
7 S7 _( D2 d; W  MicoRtcSetTime(&cur_time);            //初始化 RTC 时钟的时间
5 [$ {- [# W% P8 r2 w}
! b6 P# H& f, [/*************************************************
" b, s' q1 n, s$ Q) s: w0 n * Function:  RTC时间允许读取函数
% N. j! k5 r* p* t$ d6 F+ K' q * parameter
# w& Q6 x$ A$ N, `! r# o# q& M7 S * Return. a+ i- g0 G  M- _# m! }5 D4 f
* Modify:
; [+ x8 F$ v! c) t) |3 z**************************************************// a, b0 W3 A0 Y+ J- w$ d6 l. p
void RTC_Time_Run(unsigned int arg)2 g* }& M2 L' R  m( e/ q& K9 S
{, V, ]3 D" {& a9 x
  RTC_Time_Init();
+ x4 u" F" _6 B while(1)
2 Y+ K4 M! I1 c4 z {8 Q3 _* ~# G6 Q1 Z
  MicoRtcGetTime(&cur_time); //返回新的时间值5 j* F* m4 ?+ B* r5 G
  sleep(1000);7 L+ C" q* X+ a  ~
}
4 G- O" z2 l- W, S6 i}. R+ u7 f; n2 H$ D. V0 M

+ u6 k. q; q  \5 G0 K. q! U( I
' d# t" G0 A2 W! e! Rstatic void micoNotify_ConnectFailedHandler(OSStatus err, void* inContext)
) s( N  O- [6 Q2 H{/ M6 S! m" w% ^  R8 L- |. a# {1 K& S
  wifi_station_log("join Wlan failed Err: %d", err);" w1 [0 k* Q7 Y- D* i6 ?
}
4 [: ?# n: r+ Y! U* x, _
! }/ c) b# c. u# ustatic void mqtt_proc(mico_thread_arg_t arg)
* D8 s7 `& _; s{
# X! ]: t2 e, }0 n  wifi_station_log("start running mqtt_proc thread");% w" z/ }2 \0 _( J2 r* [1 j
   //easylink_extra_data;& E+ d' n- M' ~
  mqtt_client_demo();
5 L2 Y/ K; ~( z& ], U4 b" Q  wifi_station_log("end running mqtt_proc thread");5 q8 E% i* s+ \$ C
  mico_rtos_delete_thread(NULL);
1 ?8 y. S( O; \+ j9 L  I}
( O, J/ z" s2 q6 y( f
- L" f/ c  }: a6 ~6 r: z3 X% hstatic void micoNotify_WifiStatusHandler(WiFiEvent event,  void* inContext)
8 @5 x( c2 B& {9 q/ r{
0 F' ]( ^$ I8 ?  APPD = 1;; F# \5 p! y3 w- S1 L3 R" \
  switch (event)   a* \9 I9 ?- |& |6 P% C" f) m) N
  {
4 p; `; I7 \9 Q* T$ Z. m: X0 y  case NOTIFY_STATION_UP:( w8 ^6 D( _" I/ h4 _, f
    wifi_station_log("Station up");
1 T9 Z3 Q1 g5 ]/ v/ ]7 ^( l% _7 a. b4 V2 a

) A% S/ H1 Q1 f# ?" c. y5 G  //  wifi_station_log(da);
1 t# P+ \% o8 B1 i9 G& G6 Z! N    //aliyun_iot_mqtt_network_event_callback(ALI_IOT_NETWORK_CONNECTED, NULL);
' @. Q2 y0 w/ J% J$ D+ T    if(1 == isMqttThreadEnter)
6 X2 D2 f6 T  y! s# n  ^# H. J% t    {
) L: k6 s1 w# H* p      wifi_station_log("mqtt thread already running");
! w: b+ O: \: z. ~4 w      return;
# F3 m# h% `# W( V. t/ P" P1 m    }' w: `! k/ L" z4 P1 K  I  I
    mico_thread_t threadHandle;
- P% `! P/ O/ x5 G    mico_rtos_create_thread(&threadHandle, 1, "mqtt_thread", mqtt_proc, 1024*16, NULL);* S* T; F0 \2 L) x6 ?, ~7 r1 W. T
    isMqttThreadEnter++;
1 Q' Y; K( h: I  S! K7 p( y6 w1 m  L/ f    break;! l+ g- Y1 n3 C* k' w. e; {& o
' v& n. y" Y9 k% N' X! {
    break;
- @6 R; E* t% ~& d  case NOTIFY_STATION_DOWN:
1 A6 ]/ j, k4 M  I    wifi_station_log("Station down");+ t3 {/ ~/ x) e
    break;
+ }. m8 [" A1 h" g( _) @( |  default:
; o$ r; O) G4 J9 c4 K8 Y% q6 h    break;! |6 x+ e3 e8 k0 s2 X2 m) y
  }4 X) E1 _2 k) q5 q
}
4 @+ v: t! n- p% c" z$ H  ~; m8 v2 }+ r# U4 P1 `
int application_start( void )
# K1 g( }- {. M( y{ " o6 C, |! N9 V/ l5 w
  OSStatus err = kNoErr;' Y* L. @" [# r
  char str[10] = {0};7 F8 H4 Y) Q+ y+ _
  unsigned char sssf[2]={0};4 ?" ?' k: ^' \% p+ m; s; C( C+ ^  Q% n
//   mico_thread_t t_handler = NULL;/*线程句柄*/
) k3 D8 K0 n4 W" f, j, G3 ~  MicoInit();  O3 F& n- @* P
3 B# @  S1 k% ~1 g
  AT24CXX_sensor_init();//初始化I2C
1 w" a/ e7 o9 y6 d& i0 u  /* Start MiCO system functions according to mico_config.h, # D4 N  g5 E3 r  m
     Define macro MICO_WLAN_CONNECTION_ENABLE to enable wlan connection function
, j6 o+ Q% k6 e7 K" M     Select wlan configuration mode: MICO_CONFIG_MODE
8 w( g4 ?; L/ x) s) ^7 }  V, E     Define EasyLink settings */
6 s" v/ d9 h( h# Z- b! U  err = mico_system_init( mico_system_context_init( 0 ) );                      //9 y/ r5 U6 W4 K1 x4 v5 ?9 A

# F1 Z# `  f) c- {3 M" P  /* Register user function when wlan connection status is changed */: a' S) u% E2 a. `" Y; w' o! y
  err = mico_system_notify_register( mico_notify_WIFI_STATUS_CHANGED, (void *)micoNotify_WifiStatusHandler, NULL );
" q) Y4 ~; f) K' u6 ]* T2 h$ q$ b! t' G) u/ M* d2 l# ^
  /* Register user function when wlan connection is faile in one attempt */
( A' O3 A! V% V7 @  err = mico_system_notify_register( mico_notify_WIFI_CONNECT_FAILED, (void *)micoNotify_ConnectFailedHandler, NULL );0 R$ A0 ]# S0 s
% h/ G' f3 T. Q; \. d* R+ C
1 o/ }  R# d8 R- N. ]
      err = mico_rtos_create_thread(NULL,MICO_APPLICATION_PRIORITY,"RTC Time Run",RTC_Time_Run,500,NULL);//创建并启动一个新的线程
0 I3 X8 _! a- _* V% U- m! E$ W' |+ g, ?0 C/ R. ^: U6 _
  ext_rgb_led_log("rgb led conrtol demo(RGB_MODE)");
: K4 ^% L5 B$ f4 ~, [2 f" m' J5 a' d0 q6 l6 W
  /*LED1初始化*/
& A) C/ M- }: P; e0 u6 T  err = RUN_LED_init();
1 ]. G1 }3 d/ `, ~" j+ j+ l  v
+ o! P/ F# o& d$ z- e+ G  /* 初始化 直流电机 */+ v  J" p: H8 P6 m) E# D9 ^
//  err = dc_motor_init();
$ U5 v+ q* G5 [: z! m/ e; V# q# t! K  W; i" `
9 P1 @: E# h( Z& w9 v
  /*初始化 温度 湿度*/
: T# L1 D! K' C//  err = DHT11_Init();
# x9 @1 t1 a/ M) w6 b( ~6 z  AT24CXX_Write_RegData(0x00,0X55);0 @6 U6 H- Z! V' s" F* T
//  AT24CXX_Read_RegData(0x00,sssf);
" G6 J* b  a. o, x  APPD =0x55;//sssf[0]; * l3 Z+ ]# B! u9 r
  ext_rgb_led_log("%d",APPD);
( U4 N" j7 d0 d5 A, {3 j; E//  sprintf(str,"%d",APPD);) H( U9 j% i* c! V
  /*初始化 光发射二极管*/ / V5 ~2 ?; ]) n' }  G, v" v
  OLED_Init();5 d! ~, L; e  m5 ^& s4 e  y9 O' I
  OLED_ShowString(0, 2,str);
; r% ?5 |  q3 G3 V2 m- p
8 b2 Z5 E8 K3 ^/ u# Q  /*初始化光强传感器*/ ) i3 _" }* V7 G4 V8 {
//  err = light_sensor_init(); & s! `. f; G7 i
" d1 ^. e  K; y1 A
  /*按键初始化*/* ]& d" t7 D( f& E8 ]
//  GPIO_KEY_Init();
4 \0 b# ~; E7 X+ w" K
" v* P6 v" g/ R
1 h, B- `! {1 m* c; C  ?  mico_rtos_delete_thread(NULL);
+ L; B( k& V- R( R( R  return err;9 j" _& q- D) O
}
* g2 ]; |5 \. E: p5 P
* V3 f9 K" w  {0 F% L/ {1 X+ d) X- Y* a  g
# Y2 a* Y1 w5 y

4 o& q# u3 D( G
I2C

0个回复

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

本版积分规则


关闭

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

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

GMT+8, 2025-12-13 20:27 , Processed in 1.018664 second(s), Total 50, Slave 34 queries .

Powered by 电子发烧友网

© 2015 bbs.elecfans.com

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