以efm32tg842为核心的微型四轴飞行器研发笔记(欢迎探讨)
看着论坛里做的人那么多,很早就开始心动了。筹备了3-4个月。终于准备开干。基本工作已经准备完成。目标:
先做四轴。后面有时间再做无人飞机。
挑战一下难度。做一个可以自己悬浮的四轴。这个也算是无人飞机的第一步吧。
总体框架:
1、MCU
EFM32 TG842 手上正好有他家的CHIP。和STM32一样,不过比STM32更稳定。价格也差不多。我拿到手的是样片,而且手头也有一块开发板,方便。
PIN脚计划:
9轴传感器 I2C
无线模块:2个GPIO+SPI
超声波:GPIO*2 预留5套超声波
电机速度控制,GPIO*4
PIN预留:
GPS UART
GPRS UART
2、大部分传感器和控制模块全用X宝上的。以后有机会要做集成再说。谁家买的我就不说了。X宝上多的是。
9轴: ADXL345+HMC5883L+ L3G4200D
无线:nRF24L01 代替方案:蓝牙 ATK-HC05-V11 是用无线还是用蓝牙还没考虑好。
超声波模块: X宝上一堆。
其它的要用再加。 GPS和GPRS是将来用来做无人飞机考虑的。
先上传核心芯片的资料,供大家参考。 EFM32中文介绍版本 Silicon labs 的吧?
这个芯片并不是很流行。性能可能还可以。 elec921 发表于 2014-4-14 19:43 static/image/common/back.gif
Silicon labs 的吧?
这个芯片并不是很流行。性能可能还可以。
确实不是很流行。不过重在稳定。 这次用EFM32作为核心芯片,主要也是想看看是不是用这款芯片,能让四轴飞行器的兴能更稳定。 EFM32系列的工业应用范围还是比较广的。 这两天比较忙,过两天把画的原理图进行共享。PCB板的布局,打算先做一块综合版,将各个模块的功能调通,再优化PCB板。 顶
项
顶
项
顶
项
顶
项 哎吆,9楼顶的腰挺直的哈,..看我顶起.
顶
顶顶
顶顶顶
顶顶顶顶
顶顶顶顶顶
顶顶顶顶顶顶
顶顶顶顶顶顶顶
顶顶顶顶顶顶顶顶
靠墙角顶是比较稳定... 支持原创 我是来顶贴的
顶一个
赞一个
什么也不说了.先上一个串口通讯代码
#include <stdint.h>
#include <stdbool.h>
#include "efm32.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_gpio.h"
#include "em_usart.h"
//读取数据中断
void USART1_RX_IRQHandler(void)
{
if(USART_Rx(USART1) == 0x5)
{
GPIO_PinOutToggle(gpioPortD, 7); //如果接收到数据,反置PD7 在开发板STK3300上为LCD
}
}
void UART_Initial(void)
{
//初始化时钟
CMU_ClockEnable(cmuClock_HFPER, true);
CMU_ClockEnable(cmuClock_GPIO, true);
CMU_ClockEnable(cmuClock_USART1, true);
// 初始化 通讯参数
USART_InitAsync_TypeDef UART_init = USART_INITASYNC_DEFAULT;
UART_init.baudrate = 9600;
USART_InitAsync(USART1, &UART_init);
// 初始化中断
USART1->IFC = _USART_IFC_MASK;
NVIC_ClearPendingIRQ(USART1_RX_IRQn);
NVIC_EnableIRQ(USART1_RX_IRQn);
USART1->IEN = USART_IEN_RXDATAV;
//设置PD0 为RX PD1为TX
GPIO_PinModeSet(gpioPortD,0,gpioModePushPull,1); //tx
GPIO_PinModeSet(gpioPortD,1,gpioModeInput,1); //rx
USART1->ROUTE |=USART_ROUTE_TXPEN | USART_ROUTE_RXPEN | USART_ROUTE_LOCATION_LOC1;
}
/**************************************************************************//**
* @briefMain function
*****************************************************************************/
/**************************************************************************//**
* @briefMain function
*****************************************************************************/
int main(void)
{
/* Chip errata */
CHIP_Init();
//设置时钟
SystemCoreClockUpdate();
UART_Initial();
CMU_ClockEnable(cmuClock_GPIO, true);
// 允许PD7GPIO输出
GPIO_PinModeSet(gpioPortD, 7, gpioModePushPull,0);
unsigned char ucData = 0;
/* Infinite blink loop */
while(1)
{
unsigned long ulDelay = 100000; // 延时100MS
while(ulDelay--);
if(ucData < 10)ucData++;
else ucData = 0;
USART_Tx(USART1,ucData); // 输出ucData
}
}
因为 @mgyml 的板子芯片没到.最近一直在用开发板做测试
再上一个I2C调试ADXL345的DEMO
和昨天的UART打了个包.
硬件相关的开发软件,目前主要用到的是Protel DXP 2004,这个软件的有点大,网站里不太好上传,贴个网址,感兴趣的可以自己下载:http://www.pc6.com/softview/SoftView_51071.html
@che180 还没有可以飞...
:victory::lol:victory::P 昨天晚上4点,调试完蓝牙..就一个问题折腾了我很久.
因为是用开发板.开发板上只提供了一个USART和一个LEUSART(低功耗串口).
LEUSART的最高波特率只能到9600.我设置成35400.结果一直通讯不成功.
最后还是把LEUSART做为和计算机通讯,把USART做为和蓝牙模块通讯.总算完成了.
附带HC05蓝牙笔记:
主机就是能够搜索别人并主动建立连接的一方,从机则不能主动建立连接,只能等别人连接自己,
KEY OFF 可以发送数据KEY ON 可以发送AT指令(这里也折腾了一翻,发傻了.)
AT+NAME=Bluetooth-Slave蓝牙名称为Bluetooth-Slave
AT+ROLE=0 蓝牙模式为从模式
AT+CMODE=0 蓝牙连接模式为任意地址连接模式
AT+PSWD=1234 蓝牙配对密码为1234
AT+UART=38400,0,0 蓝牙通信串口波特率为9600,停止位1位,无校验位
AT+RMAAD 清空配对列表
学习了 GPS模块搞定了.和蓝牙的传输方式一样.而且我没有配置参数.
不过一直没收到星.等天晴了,到室外试试.
页:
[1]
2