EZ430-RF2500 pievienojot SD ar SPI.

M

mz8e08

Guest
ir izveidots savienojums SD karte ar SPI kontakti.

pieslēgties STE tieši chip select / slave jāizvēlas cc2500.Izmantot ne vārtu pieslēgties STE ar chip izvēlētos pin SD.

Es, izmantojot EZ430 iekšējās temperatūras sensoru, lai uzraudzītu apkārtējās vides temperatūras, uzglabāt savākto datu SD flash atmiņas karti, un tad nosūta ar SD karti datu piekļuves punktu, caur cc2500, izmantojot SimpliciTI.

Ar SD karti saskarne veiksmīga.Pirmkārt, viens nozarē ziņa ir uzrakstīta uz SD karti un tad nolasa no SD kartes.Pēc tam sistēma ir ieslēgta saskarnes cc2500, apraides ziņu piekļuves punktu.Pēc tam sistēma ir pāreja uz SD karti rakstīt otro nozares ziņu.Bet, mēģinot pāriet sistēmu cc2500, gala ierīci nevar apvienoties, lai tīklam.Sistēma apstāties pie šiem,

/ / Jāmēģina sasaistīt ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)

Šķiet, pirmais slēdzis no SD uz SimpliciTI ir veiksmīga, otrais neizdevās.Kods, kam seko:

# include "bsp.h"
# include "mrfi.h"
# include "nwk_types.h"
# include "nwk_api.h"
# include "bsp_leds.h"
# include "bsp_buttons.h"
# include "vlo_rand.h"

# include <msp430x22x4.h>
# include <hal_hardware_board.h>
# include <mmc.h>
# include <stdio.h>

neparakstīts garš cardSize = 0;
unsigned char status = 1;
unsigned int timeout = 0;
int i = 0;
int nozarē;/ / unsigned char buferis [512];

uint8_t msg [512] / / mainīt Zheng
uint8_t ziņas [3];
linkID_t linkID1;

anulēts linkTo (spēkā neesošs);
anulēts MCU_Init (spēkā neesošs);
anulēts sampledata ();

__no_init gaistošo int tempOffset @ 0x10F4; / / Temperatūras kompensēt noteikta ražošanas
__no_init gaistošo char Flash_Addr [4] @ 0x10F0; / / Flash adrese, kas noteikta pēc nejaušības principa

anulēts createRandomAddress ();

/ / anulēts main (spēkā neesošs) --------------------- mainīt Zheng
anulēts main (anulēts)
(

addr_t lAddr;
WDTCTL = WDTPW WDTHOLD; / / Stop WDT
(
/ / Kavēšanās cilpu, lai nodrošinātu pareizu starta līdz SimpliciTI palielina DCO
/ / Šis parasti ir pielāgota izmantotās elektropiegādes, un šajā gadījumā
/ / Ir overkill drošības dēļ plašu izplatīšanu.
gaistošo int i;
for (i = 0; i <0x000F, i ){}
)
if (CALBC1_8MHZ == 0xFF) / / Do nedarbosies, ja cal vērtības izdzēš
(
gaistošo int i;
P1DIR | = 0x03;
BSP_TURN_ON_LED1 ();
BSP_TURN_OFF_LED2 ();
while (1)
(
for (i = 0; i <0x000F, i ){}
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)

for (sektors = 0; sektors <3; sektors )
(/ / Inicializēt MSP430 ---------------------------------------- pievienotā Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO pēc nejaušības funkcija
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 pārtraukt ļāva
TACCR0 = 12.000; / / ~ 1 sec
TACTL = TASSEL_1 MC_1; / / ACLK, upmode

Parauga temperatūras datus
/ / Uint8_t msg [3];
/ / LinkID_t linkID1;
gaistošo ilgi temperatūra;
int degC, volt;
int rezultāti [2];

for (i = 0; i <6; i = 3)
(
ADC10CTL1 = INCH_10 ADC10DIV_4; / / Temp Sensor ADC10CLK / 5
ADC10CTL0 = SREF_1 ADC10SHT_3 REFON ADC10ON ADC10IE ADC10SR;
for (degC = 10; degC> 0; degC -); / / kavēšanās, lai ļautu atsauci uz atrisināt
ADC10CTL0 | = ENC ADC10SC; / / Paraugu ņemšanas un konversijas sākums
__bis_SR_register (CPUOFF GIE); / / LPM0 ar pārtrauc iespēja
rezultāti [0] = ADC10MEM;

ADC10CTL0 & = ~ ENC;

ADC10CTL1 = INCH_11; / / AVcc / 2
ADC10CTL0 = SREF_1 ADC10SHT_2 REFON ADC10ON ADC10IE REF2_5V;
for (degC = 10; degC> 0; degC -); / / kavēšanās, lai ļautu atsauci uz atrisināt
ADC10CTL0 | = ENC ADC10SC; / / Paraugu ņemšanas un konversijas sākums
__bis_SR_register (CPUOFF GIE); / / LPM0 ar pārtrauc iespēja
rezultāti [1] = ADC10MEM;
ADC10CTL0 & = ~ ENC;
ADC10CTL0 & = ~ (REFON ADC10ON); / / izslēdziet / D, lai taupītu enerģiju

/ / ° C = ((A10/1024) * 1500mV)-986mV) * 1/3.55mV = A10 * 423/1024 - 278
/ / Temperatūra ir jānosūta kā vesels skaitlis, kur 32,1 = 321
/ / Tātad 4.230, nevis 423
temp = rezultāti [0];
degC = ((temp - 673) * 4.230) / 1024;
if (tempOffset! = 0xFFFF)
(
degC = tempOffset;
)
/ * ziņojuma formātu, UB = augšējā Byte, LB = pamatizglītības Byte
-------------------------------
| degC LB | degC UB | volt LB |
-------------------------------
0 1 2
* /

temp = rezultāti [1];
volt = (temp * 25) / 512;
msg = degC &0xFF;
msg [i 1] = (degC>>

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vēss" border="0" />

&0xFF;
msg [i 2] = volts;
)
for (i = 6; i <10; i ) msg = '0 ';

/ / Inicializēt MSP430 ---------------------------------------- pievienotā Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO pēc nejaušības funkcija
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 pārtraukt ļāva
TACCR0 = 12.000; / / ~ 1 sec
TACTL = TASSEL_1 MC_1; / / ACLK, upmode

/ / Uzsākšana MMC / SD-card
while (status! = 0) / / if atgriešanās nav NULL kļūda bija notiek, un
/ / MMC / SD karte tiek inicializēts atkal
(
status = mmcInit ();
timeout ;
if (timeout == 150) / / Try 50 reizes līdz kļūda
(
/ / Printf ( "Nav MMC / SD-karte atrasts!% X \ n", statusa);
break;
)
)
/ *
while ((mmcPing ()! = MMC_SUCCESS)); / / wait till karte ir ievietota ------ maina Zheng (svītrots izraisīt ne CD)
* /

/ / Lasīt Card Size no CSD reģistrā
cardSize = mmcReadCardSize ();

/ *
/ / Clear nozarēs MMC
for (i = 0; i <512; i ) buferšķīdums = 0;
mmcWriteSector (0, buffer); / / write 512 Byte liels bloks, kas sākas (saskaņotām) adrese
* /
/ / Store temperatūras datus bufera -------- pievienotā Zheng

mmcWriteSector (nozare, msg); / / write 512 Byte liels bloks, kas sākas (saskaņotām) adrese

mmcReadSector (nozare, msg); / / lasīt izmērs Byte liels bloks, kas sākas adresi./ /开始重新初始化--------------------------------- pievienotā Zheng
/ / SimpliciTI mainīsies ostas pin iestatījumus, kā arī
P1DIR = 0xFF;
P1OUT = 0x00;
P2DIR = 0x27;
P2OUT = 0x00;
P3DIR = 0xC0;
P3OUT = 0x00;
P4DIR = 0xFF;
P4OUT = 0x00;if (Flash_Addr [0] == 0xFF & &
Flash_Addr [1] == 0xFF & &
Flash_Addr [2] == 0xFF & &
Flash_Addr [3] == 0xFF)
(
createRandomAddress (); / / set Random ierīce adrese sākotnējās palaišanas
)
lAddr.addr [0] = Flash_Addr [0];
lAddr.addr [1] = Flash_Addr [1];
lAddr.addr [2] = Flash_Addr [2];
lAddr.addr [3] = Flash_Addr [3];
SMPL_Ioctl (IOCTL_OBJ_ADDR, IOCTL_ACT_SET, & lAddr);/ / inicializēt MSP430 ----------- pievienotās y Zheng
BCSCTL1 = CALBC1_8MHZ; / / Set DCO pēc nejaušības funkcija
DCOCTL = CALDCO_8MHZ;
BCSCTL3 | = LFXT1S_2; / / LFXT1 = VLO
TACCTL0 = CCIE; / / TACCR0 pārtraukt ļāva
TACCR0 = 12.000; / / ~ 1 sec
TACTL = TASSEL_1 MC_1; / / ACLK, upmode

/ /初始化结束/ / Jāmēģina apvienot līdz veiksmīga.toggle LEDS lai norādītu, ka
/ / Pievienoties nav notikusi.LED3 ir sarkans, bet ar nosaukumu LED 4 on EXP
/ / Board sietspiedes.LED1 ir zaļš.
while (SMPL_NO_JOIN == SMPL_Init ((uint8_t (*) (linkID_t)) 0))
(
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();;
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
BSP_TOGGLE_LED2 ();
)
/ / Beznosacījuma saite uz AP, kas klausās pateicoties veiksmīgai pievienoties.
/ / LinkTo ();

/ / Jāmēģina sasaistīt ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)

/ / Izslēgt visas LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)

/ / ieraksta LPM3 līdz taimeris pārtraukt
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();

/ / While (1)
for (i = 0; i <9; i = 3)
(ziņas [0] = msg ;
ziņas [1] = msg [i 1];
ziņas [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, ziņas, sizeof (ziņas)))
(
BSP_TOGGLE_LED2 ();
)
citādi
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Finish linkto \ n");

)
)anulēts createRandomAddress ()
(
unsigned int rand, rand2;
darīt
(
rand = TI_getRandomIntegerFromVLO (); / / Pirmais baits nevar 0x00 no 0xFF
)
while ((rand & 0xFF00) == 0xFF00 | | (rand & 0xFF00) == 0x0000);
rand2 = TI_getRandomIntegerFromVLO ();

BCSCTL1 = CALBC1_1MHZ; / / Set DCO līdz 1MHz
DCOCTL = CALDCO_1MHZ;
FCTL2 = FWKEY FSSEL0 FN1; / / MCLK / 3 Flash Timing Generator
FCTL3 = FWKEY LOCKA; / / Clear LOCK & LOCKA biti
FCTL1 = FWKEY WRT; / / Set WRT mazliet par write operation

Flash_Addr [0] = (rand>>

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vēss" border="0" />

& 0xFF;
Flash_Addr [1] = rand & 0xFF;
Flash_Addr [2] = (rand2>>

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Vēss" border="0" />

& 0xFF;
Flash_Addr [3] = rand2 & 0xFF;

FCTL1 = FWKEY; / / Clear WRT bit
FCTL3 = FWKEY LOCKA LOCK; / / Set LOCK & LOCKA bit
)

/ *
anulēts linkTo ()
(
/ / Jāmēģina sasaistīt ...
while (SMPL_SUCCESS! = SMPL_Link (& linkID1))
(
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
BSP_TOGGLE_LED1 ();
BSP_TOGGLE_LED2 ();
)

/ / Izslēgt visas LEDs
if (BSP_LED1_IS_ON ())
(
BSP_TOGGLE_LED1 ();
)
if (BSP_LED2_IS_ON ())
(
BSP_TOGGLE_LED2 ();
)

/ / ieraksta LPM3 līdz taimeris pārtraukt
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_SLEEP, "");
__bis_SR_register (LPM3_bits GIE); / / LPM3 ar pārtrauc iespēja
SMPL_Ioctl (IOCTL_OBJ_RADIO, IOCTL_ACT_RADIO_AWAKE, "");
BSP_TOGGLE_LED2 ();

/ / While (1)
for (i = 0; i <510; i = 3)
(ziņas [0] = msg ;
ziņas [1] = msg [i 1];
ziņas [2] = msg [i 2];
(if (SMPL_SUCCESS == SMPL_Send (linkID1, ziņas, sizeof (ziņas)))
(
BSP_TOGGLE_LED2 ();
)
citādi
(
BSP_TOGGLE_LED2 ();
BSP_TOGGLE_LED1 ();
)
)
)
/ / Printf ( "Finish linkto \ n");
)

* /

/*------------------------------------------------ ------------------------------
* ADC10 pārtraukt pakalpojumu ikdienas
-------------------------------------------------- ----------------------------*/
# Pragma vektors = ADC10_VECTOR
__interrupt spēkā ADC10_ISR (spēkā neesošs)
(
__bic_SR_register_on_exit (CPUOFF); / / Clear CPUOFF mazliet no 0 (SR)
)

/*------------------------------------------------ ------------------------------
* Taimeris A0 pārtraukt pakalpojumu ikdienas
-------------------------------------------------- ----------------------------*/
# Pragma vektors = TIMERA0_VECTOR
__interrupt spēkā Timer_A (spēkā neesošs)
(
__bic_SR_register_on_exit (LPM3_bits); / / Clear LPM3 mazliet no 0 (SR)
)

 

Welcome to EDABoard.com

Sponsor

Back
Top