MSP430FR2433 用driverlib方式 SPI调试记录

由于MSP430FR2433红板子搞活动,弄了几块玩玩,发现网上很多MSP430系列的SPI很多都使用普通的GPIO模拟SPI,很少有说如何使用driverlib来操作GPIO的,MSP430本身就支持SPI,为何费劲要用GPIO模拟呢?

  • MSP430系列TI提供了driverlib方便用户进行开发,driverlib是对标准的寄存器操作进行了二次封装,用户只需要调用API就可以了,非常方便。
  • 这里有一个迷惑的地方,就是primary function和secondary以及ternary这三个功能对应的芯片GPIO是怎么对应的,刚开始很困惑,其实非常简单,由于MSP430是兼容了UART和SPI,但是同一个引脚同一时刻只有一个功能工作,如果工作在SPI模式,那么UART就无效了,反之亦然,看一下TRM手册就明白了。

直接上SPI初始化代码

    // Configure SPI Pins for UCA0CLK, UCA0TXD/UCA0SIMO and UCA0RXD/UCA0SOMI
    /*
    * Select Port 1
    * Set Pin 4, Pin 5 and Pin 6 to input Primary Module Function
    */
    GPIO_setAsPeripheralModuleFunctionInputPin(
    	GPIO_PORT_P1,
    	GPIO_PIN4+GPIO_PIN5+GPIO_PIN6,
    	GPIO_PRIMARY_MODULE_FUNCTION
    );    
    
    GPIO_setAsOutputPin(GPIO_PORT_P3,GPIO_PIN1);
    GPIO_setOutputLowOnPin(GPIO_PORT_P3, GPIO_PIN1);
    
    GPIO_setAsOutputPin(GPIO_PORT_P1,GPIO_PIN7);
    GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN7);    

    /*
     * Disable the GPIO power-on default high-impedance mode to activate
     * previously configured port settings
     */
    PMM_unlockLPM5();

    //Initialize Master
    EUSCI_A_SPI_initMasterParam param = {0};
    param.selectClockSource = EUSCI_A_SPI_CLOCKSOURCE_SMCLK;
    param.clockSourceFrequency = CS_getSMCLK();
    param.desiredSpiClock = 500000;
    param.msbFirst = EUSCI_A_SPI_MSB_FIRST;
    param.clockPhase = EUSCI_A_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT;
    param.clockPolarity = EUSCI_A_SPI_CLOCKPOLARITY_INACTIVITY_HIGH;
    param.spiMode = EUSCI_A_SPI_3PIN;
    EUSCI_A_SPI_initMaster(EUSCI_A0_BASE, &param);

    //Enable SPI module
    EUSCI_A_SPI_enable(EUSCI_A0_BASE);

    //Clear receive interrupt flag
    EUSCI_A_SPI_clearInterrupt(EUSCI_A0_BASE,
          EUSCI_A_SPI_RECEIVE_INTERRUPT
          );

    // Enable USCI_A0 RX interrupt
    EUSCI_A_SPI_enableInterrupt(EUSCI_A0_BASE,
                         EUSCI_A_SPI_RECEIVE_INTERRUPT);
  • 很多人可能会发现,用spi貌似速度太慢了,外面接个spi 0.96英寸 oled显示屏,刷新实在太慢,原因是clock造成的,修改一行代码
    //Select XT1 as the clock source for SMCLK with no frequency divider
    CS_initClockSignal(CS_SMCLK, CS_DCOCLKDIV_SELECT, CS_CLOCK_DIVIDER_1);
良心货,有学习MSP430程序的网友拿去,各种例题,源码,可以直接拿来用的例程。 程序目录: MSP430F149+1602数码显示和实时时钟 MSP430F149,IAR,ADC采样之后对太阳点光源进行跟踪 MSP430F149 AD7705程序 MSP430 BH1750测量光强(已测试) Launch Pad NOKIA5110 Clock 使用MSP430单片机控制超声波测距并使用5110显示 基于MSP430的MP3 源码+电路图+PCB+字库+SD卡 基于MSP430单片机控制坦克打靶C语言源程序代码 MSP430F149 GSM基本控制,初始化接收短息,解读短信 ADXL重力加速度传感器实现计步器程序(利用MSP430F135实现) 利用MSP430的PWM功能实现电机的调速(可实现精确调速) TI公司MSP430芯片评估板lantchpad的电容式触摸板的源码 基于MSP430F149单片机的1602程序代码 基于MSP430F149单片机的nRF24L01无线通信程序 基于MSP430F149单片机的串口0驱动程序 基于MSP430F149单片机的温湿度传感器SHT1X驱动程序 基于MSP430F149的12864的显示图片 基于MSP430F149的AD转换,在液晶1602上显示 基于MSP430F149的触摸手写程序 基于MSP430F149为主芯片下的红外线解码资料源程序 基于MSP430F249的GPS+GPRS车载GPS 基于MSP430单片机的电子式互感器采集器的程序 基于MSP430单片机的智能电表 基于MSP430的触摸屏校正程序 基于MSP430的温度传感器DS18B20对温度的检测和显示 基于单片机MSP430的DS1302的时钟芯片编程,实现时钟显示 利用MSP430实现的超低功耗触摸屏 使用MSP430低功耗微处理器制作的斜度计(开发平台是IAR) 通过MSP430(149)单片机控制DHT11温湿度传感器 MSP430F149单片机与RF2401硬件SPI无线通信 MSP430f149控制LCD12864显示汉字、字母 MSP430F149通过SPI接口控制ADS1216 MSP430F449实现频率测量,呼吸灯,自己写的,调试OK MSP430x13x, MSP430F14x, MSP430F15x, MSP430F16x Code Examples MSP430x14x读写FM25L256程序 MSP430x14x模糊逻辑马达控制-源程序,已通过测试 MSP430单片机短息收发程序 MSP430平台 AM2301测量光强(已测试) MSP430热电偶开发程序,高精度测量,带标定 MSP430热电阻开发,高精度测量,带标定,修正 MSP430小车解决方案含Protel和源代码 MSP430与指纹识别
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页