TI中文支持网
TI专业的中文技术问题搜集分享网站

求一个MSP430G2211的SPI例程

现在要用到MSP4320G2211的SPI 做东西,自己软件模拟的SPI怎么也调不通,求大神分享一个例程,多谢

灰小子:

网上有很多这类例程
你可以参考wenku.baidu.com/…/b65b7d12ff00bed5b9f31d8d.html

user5885910:

回复 灰小子:

好的 多谢提供思路

gaoyang9992006:

/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/
//******************************************************************************
//MSP430G2x21/G2x31 Demo - SPI full-Duplex 3-wire Master
//
//Description: SPI Master communicates full-duplex with SPI Slave using
//3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
//Master will pulse slave reset for synch start.
//ACLK = n/a, MCLK = SMCLK = Default DCO
//
//**** used with "msp430g2x21_usi_03.c"****
//
//SlaveMaster
//MSP430G2x21/G2x31MSP430G2x21/G2x31
//----------------------------------
//|XIN|-/|\|XIN|-
//||| ||
//|XOUT|---|RSTXOUT|-
//|| /|\||
//|RST/NMI|--+<----|P1.2|
//LED <-|P1.0||P1.4|<-
//->|P1.4||P1.0|-> LED
//|SDI/P1.7|<-------|P1.6/SDO|
//|SDO/P1.6|------->|P1.7/SDI|
//|SCLK/P1.5|<-------|P1.5/SCLK|
//
//D. Dang
//Texas Instruments Inc.
//October 2010
//Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************#include <msp430.h>int main(void)
{volatile unsigned int i;WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timerP1OUT =0x10;// P1.4 set, else resetP1REN |= 0x10;// P1.4 pullupP1DIR = 0x01;// P1.0 output, else inputUSICTL0 |= USIPE7 +USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI masterUSICTL1 |= USIIE;// Counter interrupt, flag remains setUSICKCTL = USIDIV_4 + USISSEL_2;// /16 SMCLKUSICTL0 &= ~USISWRST;// USI released for operationUSISRL = P1IN;// init-load dataP1DIR |= 0x04;// Reset SlaveP1DIR &= ~0x04;for (i = 0xFFF; i > 0; i--);// Time for slave to readyUSICNT = 8;// init-load counter__bis_SR_register(LPM0_bits + GIE);// Enter LPM0 w/ interrupt
}// USI interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
#else
#error Compiler not supported!
#endif
{if (0x10 & USISRL)P1OUT |= 0x01;elseP1OUT &= ~0x01;USISRL = P1IN;USICNT = 8;// re-load counter
}

gaoyang9992006:

回复 gaoyang9992006:

/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/
//******************************************************************************
//MSP430G2x21/G2x31 Demo - SPI full-Duplex 3-wire Slave
//
//Description: SPI Master communicates full-duplex with SPI Slave using
//3-wire mode. The level on P1.4 is TX'ed and RX'ed to P1.0.
//Master will pulse slave reset for synch start.
//ACLK = n/a, MCLK = SMCLK = Default DCO
//
//**** used with "msp430g2x21_usi_02.c"****
//
//SlaveMaster
//MSP430G2x21/G2x31MSP430G2x21/G2x31
//----------------------------------
//|XIN|-/|\|XIN|-
//||| ||
//|XOUT|---|RSTXOUT|-
//|| /|\||
//|RST/NMI|--+<----|P1.2|
//LED <-|P1.0||P1.4|<-
//->|P1.4||P1.0|-> LED
//|SDI/P1.7|<-------|P1.6/SDO|
//|SDO/P1.6|------->|P1.7/SDI|
//|SCLK/P1.5|<-------|P1.5/SCLK|
//
//D. Dang
//Texas Instruments Inc.
//October 2010
//Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************#include <msp430.h>int main(void)
{WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timerP1OUT =0x10;// P1.4 set, else resetP1REN |= 0x10;// P1.4 pullupP1DIR = 0x01;// P1.0 output, else inputUSICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIOE; // Port, SPI slaveUSICTL1 |= USIIE;// Counter interrupt, flag remains setUSICTL0 &= ~USISWRST;// USI released for operationUSISRL = P1IN;// init-load dataUSICNT = 8;// init-load counter__bis_SR_register(LPM0_bits + GIE);// Enter LPM0 w/ interrupt
}// USI interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
#else
#error Compiler not supported!
#endif
{if (0x10 & USISRL)P1OUT |= 0x01;elseP1OUT &= ~0x01;USISRL = P1IN;USICNT = 8;// re-load counter
}

gaoyang9992006:

回复 gaoyang9992006:

/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/
//******************************************************************************
//MSP430G2x21/G2x31 Demo - USI SPI Interface with HC165/164 Shift Registers
//
//Description: Demonstrate USI in two-way SPI mode. Data are read from
//an HC165, and same data written back to the HC164.
//ACLK = n/aMCLK = SMCLK = default DCO, USICLK = SMCLK/2
////*USART0 control bits are in different SFR's from other MSP430's//
//
//MSP430G2x21/G2x31
//-----------------
///|\|XIN|-
//| ||^HC164
//HC165--|RSTXOUT|-|-------------
//----------|||-|/CLR,B|8
//8|/LD|<---|P1.1SIMO0/P1.6|------>|AQx|--\->
//-\->|A-HCLK|<---|P1.5/SCLK0 - P1.5|------>|CLK|
//|-|INHQH|--->|P1.7/SOMI0|||
//|-|SER|||||
//- ||||||
//
//D. Dang
//Texas Instruments Inc.
//October 2010
//Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************#include <msp430.h>int main(void)
{WDTCTL = WDTPW + WDTHOLD;// Stop WDTP1OUT = 0;P1OUT |= 0x02;P1DIR |= 0x02;USICTL0 |= USIPE7 + USIPE6 + USIPE5 + USIMST + USIOE; // Port, SPI MasterUSICTL1 |= USICKPH + USIIE;// Counter interrupt, flag remains setUSICKCTL = USIDIV_1 + USISSEL_2;// /2 SMCLKUSICTL0 &= ~USISWRST;// USI released for operationUSICNT = 8;// init-load counterwhile (1)// Loop{unsigned i;for (i = 0xFFFF; i > 0; i--);// Delaywhile (!(USIIFG & USICTL1));// Counter clear?P1OUT &= ~0x02;// Latch data into 'HC165P1OUT |= 0x02;
//********************// Read data are ready to be writtenUSICNT = 8;// re-load counter}
}

gaoyang9992006:

回复 gaoyang9992006:

/* --COPYRIGHT--,BSD_EX* Copyright (c) 2012, Texas Instruments Incorporated* All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:** *Redistributions of source code must retain the above copyright*notice, this list of conditions and the following disclaimer.** *Redistributions in binary form must reproduce the above copyright*notice, this list of conditions and the following disclaimer in the*documentation and/or other materials provided with the distribution.** *Neither the name of Texas Instruments Incorporated nor the names of*its contributors may be used to endorse or promote products derived*from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.**********************************************************************************MSP430 CODE EXAMPLE DISCLAIMER** MSP430 code examples are self-contained low-level programs that typically* demonstrate a single peripheral function or device feature in a highly* concise manner. For this the code may rely on the device's power-on default* register values and settings such as the clock configuration and care must* be taken when combining code from several examples to avoid potential side* effects. Also see www.ti.com/grace for a GUI- and www.ti.com/msp430ware* for an API functional library-approach to peripheral configuration.** --/COPYRIGHT--*/
//******************************************************************************
//MSP430G2x21/G2x31 Demo - USI SPI Interface to TLC549 8-bit ADC
//
//Description: This program demonstrates the USI in SPI mode interface to a
//TLC549 8-bit ADC. If AIN > 0.5(REF+ - REF-), P1.0 set, else reset.
//ACLK = n/a, MCLK = SMCLK = default DCO, UCICLK = SMCLK/4
////** VCC must be at least 3v for TLC549 **//
//
//MSP430G2x21/G2x31
//-----------------
///|\|XIN|-
//TLC549| ||
//---------------|RSTXOUT|-
//|CS|<---|P1.1|
//|DATAOUT|--->|P1.7/SOMIP1.0|-->LED
// ~>|AINI/O CLK|<---|P1.5/SCLK|
//
//D. Dang
//Texas Instruments Inc.
//October 2010
//Built with CCS Version 4.2.0 and IAR Embedded Workbench Version: 5.10
//******************************************************************************#include <msp430.h>int main(void)
{WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timerP1OUT = 0;P1DIR |= 0x03;USICTL0 |= USIPE7 + USIPE5 + USIMST + USIOE; // Port, SPI masterUSICTL1 |= USIIE;// Counter interrupt, flag remains setUSICKCTL = USIDIV_2 + USISSEL_2;// /4 SMCLKUSICTL0 &= ~USISWRST;// USI released for operationUSICNT = 8;// init-load counter__bis_SR_register(LPM0_bits + GIE);// Enter LPM0 w/ interrupt
}// USI interrupt service routine
#if defined(__TI_COMPILER_VERSION__) || defined(__IAR_SYSTEMS_ICC__)
#pragma vector=USI_VECTOR
__interrupt void universal_serial_interface(void)
#elif defined(__GNUC__)
void __attribute__ ((interrupt(USI_VECTOR))) universal_serial_interface (void)
#else
#error Compiler not supported!
#endif
{P1OUT |= 0x02;// Disable TLC549if (USISRL > 0x7F)P1OUT |= 0x01;elseP1OUT &= ~0x01;P1OUT &= ~0x02;// Enable TLC549USICNT = 8;// re-load counter
}

user5885910:

回复 gaoyang9992006:

多谢了,我用IO口模拟SPI已经实现了,不过还是很感谢你的帮助,又多了一种解决方案~

Susan Yang:

回复 user5885910:

很高兴您能解决问题。模拟SPI跟芯片没关系,所以官方没有相关的例程。但是网络上有很多这样的教程。

user5885910:

回复 Susan Yang:

嗯,多谢!

赞(0)
未经允许不得转载:TI中文支持网 » 求一个MSP430G2211的SPI例程
分享到: 更多 (0)