由于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, ¶m);
//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);
上一篇:MSP432学习笔记:CCS的环境配置(库函数的导入)
下一篇:MSP430F5529硬件IIC驱动IIC接口的OLED
推荐阅读最新更新时间:2024-11-12 18:00
设计资源 培训 开发板 精华推荐
- CH9340K USB转TTL模块
- LT3510EFE 演示板、双路单片式降压型 DC/DC 转换器
- OP284FSZ-REEL7 2.5V 基准的典型应用在单 3V 电源上运行
- 4pin烧录最小板!最丐版ch340c
- TS431可调精密并联稳压器典型应用电路
- 使用 Panasonic 的 AN30888B 的参考设计
- 【物联网】鸿蒙物联网WiFi智能开关+455463A
- SP7662 的典型应用,18-22V 至 12V/12A 同步降压稳压器
- 具有充电状态指示器的 LP2951 100mA 低压降稳压器的典型应用
- LTC3622EDE 5V/3.3V Vout、突发模式操作、同相开关同步降压稳压器的典型应用电路
- 迎端午,芯币可以兑换粽子啦!
- 您的电路保护有足够的空间吗?Littelfuse的881系列保险丝迎接这一挑战
- ADI基于ADPD188BI的烟雾探测器集成解决方案 有奖直播 5月13日上午10:00-11:30 为您揭晓!
- TI低功耗蓝牙技术与阿里云IoT智能生活开放平台iLOP的完美结合!预报名+看直播均可赢好礼!
- 手机观看TI视频教程,随时随地充电学习
- 直播:您的安全保护做到了吗?TI毫米波雷达直播给您答案
- 【搜集令】晒晒你收藏的经典模拟电路!!!
- 评论赢京东卡,探秘美光内存和存储解决方案!
- 第三代半导体如何测试 进阶技能备好了!收集能量抽好礼!
- EEWorld邀你来拆解第9期——电机驱动专场,拆旧物 赢电机等好礼