Energia使用入门 总体介绍和I2C的使用-基于MSP432P401R

写在前面的话

因为要参加TI杯电赛所以开始学习使用德州仪器的MSP432P401R系列M4F单片机,无奈TI的库比较难读,队友也水平有限,所以就打算寻找一些简单快捷的编程方式(毕竟四天的比赛谁能写出高质量代码呢,快速且能用才是做重要的),而且我希望能对得起这个赞助厂家和参赛同学们,并不想搞那些夹层内藏Arduino板子的骚操作(据说还得了奖)。

等等。。。。MSP432能不能用Arduino编程呢?于是我找到了这样一款软件

Energia IDE

软件官网链接: https://energia.nu/
软件为绿色软件,无需安装
自带MSP430系列支持包,MSP432系列等支持包需要在线安装并且有墙
相信玩过Arduino的同学一定不陌生这个外形(其实就是Arduino改了名字和颜色)
在这里插入图片描述
官网介绍:
Energia是罗伯特·韦塞尔斯(Robert Wessels)于2012年1月启动的开源电子原型平台,目标是将Wiring和Arduino框架引入基于Texas Instruments MSP430的LaunchPad。 Energia IDE是跨平台的,并且在Mac OS,Windows和Linux上受支持。 Energia使用Peter Bigot的mspgcc编译器,并且基于Wiring和Arduino框架。 Energia包含一个集成的开发环境(IDE),该环境在Processing IDE中具有基础(Processing→Wiring→Arduino→Energia)。 Energia还是一个可移植的框架/抽象层,可以在其他流行的IDE中使用。通过dev.ti.com上的Texas Instruments CCS Cloud或TI功能强大的CCS Desktop IDE,利用基于Web浏览器的环境。

Energia和Arduino的基础是由Hernando Barragan开发的Wiring框架。该框架经过精心设计,并牢记设计师和艺术家的精神,以鼓励社区中来自世界各地的初学者和专家分享想法,知识和他们的集体经验。 Energia团队采用边做边学的理念,并努力使直接使用硬件变得容易。 Energia为微控制器带来的易用性使专业工程师,企业家,制造商和学生都能从中受益。

Energia最初将Wiring和Arduino框架引入了德州仪器(TI)MSP430 LaunchPad。德州仪器(TI)提供了MSP430,MSP432x,TM4C,C2000,CC32xx和CC13xx LaunchPad。 LaunchPad是德州仪器(TI)生产的低成本微控制器板。 Energia的最新版本支持大多数LaunchPad产品。

LaunchPad与Energia一起可用于开发交互式对象,从各种开关或传感器获取输入,并控制各种照明,电机和其他物理输出。 LaunchPad项目可以是独立的(仅在目标板上运行,即您的LaunchPad),也可以与计算机(主机PC)上运行的软件通信。您还可以添加无线模块,以支持通过各种类型的RF进行通信,包括Wi-Fi,NFC,蓝牙,Zigbee,蜂窝等。

可以在TI网站上找到有关LaunchPad的更多信息:www.ti.com/launchpad
来自谷歌翻译
Github:https://github.com/energia/Energia
Energia可以说是Arduino的一个分支,只支持TI的板子

编程方法

与Arduino完全相同,大家可以去看Arduino的教程视频

对Arduino的偏见

我最开始入门的单片机是51,依靠大学那点C语言基础自学。看了很多开发板配套的教程感觉质量不差,就是老掉牙了,大部分都是89C52时代的产物,急需一些新东西!现在都2020年了,STC都有硬件I2C和USB了,可惜没人教。
所以我想推荐STC15系列的手册给入门的同学(12系列写的很乱,8系列有些基础的东西没有)。教学视频可能看不懂,读手册一定是一目了然。
关于对Arduino的偏见,我确实有。我觉得Arduino的程序就是一间彩钢房,一切都是预制好的程序零件,像是积木。
但我承认,Arduino的底层程序确实写的很好。我并不认为Arduino是玩具,但如果你想要一间精致的房子,还是C和汇编好一些。
我的认识是,Arduino更像是一个操作系统,用户程序就像任务进程一样运行,开放给用户的是一个状态机。

Energia的缺点

  1. 教程、资源少之又少
    基本只有43oh之类的论坛有比较深入的讨论,Arduino社区只有冷清的几个提问,但这一切的有限的活跃都开始且结束在几年前,现在更是没几个人用。
  2. 库太少且和Arduino不通用
    只有个位数的官方库,连SSD1306 OLED的库都没有,但是和Arduino不通用是最大的缺点。移植对新手来说很不友好,编译器的报错功能太简陋
  3. 开发板贵
    其实也不算缺点(因为根本没人买),竞赛可以免费申请,其他途径基本没人会买
  4. 编辑器相当简陋
    这算是继承了Arduino的缺点,以后大概率会制约Arduino平台的发展

基础操作之I2C基础读写(以读取ID为例)

关于Arduino的基础程序这里就不再赘述,Arduino和Energia官网都可以找到

这里我的板子是MSP432P401R,以后也是

  1. 首先找到I2C端口,连接好MSP432开发板和FDC2214开发板的I2C的线
    在这里插入图片描述
    在这里插入图片描述
    上面两张图片来自Energia官网

注意:官方的图I2C口顺序标反了,1号口其实才是默认口

这里我们使用默认I2C口(即P6_5和P6_4),3.3v给2214供电,并且共地
至于其他端口功能都写得很详细,大家可以自己尝试

实现程序

#include<Wire.h>  //基础的I2C库

void setup()
{
  Serial.begin(9600);  //选择默认串口0,直连调试器的虚拟串口,波特率9600
  Wire.begin();  //选择默认口0,主机模式不填地址
}

void loop()
{
  Serial.println("satrt");  //串口发出start
  Serial.flush();  //等待串口发送完毕
  uint16_t data;//接收的两字节数据
  Wire.beginTransmission(0x2A);  //请求对地址为0x2a的设备发送写数据请求
  //(会自动等待应答)注:FDC2214开发板不同,该地址可能为0x2b
  Wire.write(0X7E);  //发送要读的寄存器地址,就是2214手册里的MANUFACTURER_ID
  Wire.endTransmission(false); //结束发送,自动发送停止信号,不会发送下一次的开始信号
  delay(2);  //等一下
  Wire.requestFrom(0X2A,2);  //请求对地址为0x2a的设备发送读2个字节数据请求
  //(同样会自动等待应答)注:等待应答时程序会停下等待
  while (!Wire.available());//如果收到数据,就先读一个字节(读完数据就消失)
  data = Wire.read();  //存进去
  data <<= 8;  //移动8位,给下一个字节腾位置
  while (!Wire.available());  //又检测到发过来一个字节的数据了,
  data |= Wire.read();  //在读
  Wire.endTransmission(false); //发出终止信号
  Seria.println(data,HEX); //串口以16进制发送出刚才I2C口读到的数据
  Seria.println("end");  //串口发出end
  delay(1000);  //延时一秒,进入下一次循环
}

串口数据
在这里插入图片描述
0x7e位置的数据正是0x5449
在这里插入图片描述
读数据成功,程序重复执行,无输出的同学可以检查接线,直到有输出为止
该寄存器值可以在初始化之前读取,确定FDC2214电路是否正常连接,以及芯片是否正常工作。

Energia的优势

使用Arduino开发相比CCS、Keil、IAR等用SDK库开发确实比较简单也简陋,但是对学习过的同学非常友好,没有学习过的同学也可以很快掌握,特别对电赛这种限时的比赛用处比较大,以后可能会有很多竞赛的同学使用。

参考的程序: https://github.com/zharijs/FDC2214

  • 12
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值