⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 将msp430与使用nios的fpga相连
💻 C
字号:

#include "msp430x20x3.h"

void delay(void)
{
  volatile unsigned int i;
  volatile unsigned int j;
  for (i = 0; i < 3; ++i)
    for (j = 16000; j; j--)
      ;
}

const unsigned char SS_n_bit = 0x10; // P1.4 is SS_n
void init_spi(void)
{
  P1OUT |= SS_n_bit;
  P1DIR |= SS_n_bit; 
  
  USICTL0 = USISWRST; // Disable SPI during config.
  USICTL0 |= USIPE7 | USIPE6 | USIPE5 | USIOE | USIMST; 
  USICTL1 = 0;
 
  // USICKCTL = USICKPL; // clock phase active low (experiment)
  USICKCTL = USIDIV_1 + USISSEL_2;          // /2 SMCLK

  USICTL0 &= ~USISWRST;                 // USI released for operation
}

// Dumb polling method to send a character.
void send_spi(unsigned char c)
{
  // Dummy read to clear buffer (slau144c.pdf p. 11-7)
  volatile unsigned char receive = USISRL;
  // Assert SS_n.
  P1OUT &= ~SS_n_bit;
  USISRL = c;
  USICNT = 8;

  // Wait for the data to be transmitted...
  while ((USICTL1 & USIIFG) == 0);
  // ... and deassert SS_n.

  P1OUT |= SS_n_bit;
}

void send_spi_string(unsigned char* p)
{
  while (*p)
  {
    send_spi(*p);
    p++;
  }
}

void main(void)
{
  unsigned char msg[] = "Hello from the f2013's SPI master! ";
  unsigned char digit = '0';
  unsigned char cr = '\n';
  volatile int i = 50;
  
  WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
  init_spi();  
 
  while (i-- > 0)
  {
    send_spi_string(msg);

    digit++;
    if (digit > '9') digit = '0';
    send_spi(digit);
    send_spi(cr);

    delay();
  }
  
  // Terminate the nios2-terminal session.
  send_spi_string("\nGoodbye.\n\n");
  send_spi('\004');
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -