用户工具

站点工具


ocrobot:alpha:8f328d-rf:main

ALPHA 8F328D-RF

ALPHA 8F328D-RF是一款低成本的无线物连控制器。

参数

MCU LGT8F328D
FLASH 32Kbytes
SRAM 2Kbytes
E2PROM 可配置为 0K/1K/2K/4K/8K(与FLASH共享)
PWM 6路
主频 16MHz
ADC 6通道12位
DAC 1通道8位
SPI
TWI(I2C)
GUID(全局设备号)
内部基准 1.25V/2.56V ±1%

板卡版本需要选择0.0.12版本

参考图片

环境初始化

前往http://www.ocrobot.com/doku.php?id=zh:downloads 下载最新的测试版IDE

打开IDE界面

选择板卡管理器

在管理器中选择 LGT的支持环境,点击安装

等待安装完成,进度条消失即可

选择 LGT8F328D 板卡即可

支持库的安装与例程

支持库下载:lt8900.zip

将此压缩包解压缩到IDE根目录的libraries目录下

随后取出两块主板,分别作为发信机和接收机进行通讯测试(自行做好标记)

发信机程序如下:

/*
 * 发信机
 * 迷你强
 * chenglei1234@gmail.com
   Copyright (C) 2016 迷你强增补
 Copyright (C) 2015 Rob van der Vee"));rob.c.veer@gmail.com>
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 version 2 as published by the Free Software Foundation.
 */
 
/* Connections:
 
 OCROBOT -> LT8910
 
 GND        GND
 3v3        VCC
 23         PKT
 21         CS
 24         RST
 11         MOSI
 12         MISO
 13         SCK
 
*/
#include <SPI.h>
#include "LT8900.h"
/*无线射频SPI管脚定义,请勿更改*/
const uint8_t PIN_NRF_RST = 24;
const uint8_t PIN_NRF_CS = 21;
const uint8_t PIN_NRF_PKT = 23;
 
 
bool writer;
 
LT8900 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
 
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println(F("\n\nLT8900 module sample, v0.1.\n\n"));
 /*SPI 初始化*/
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE1);
  SPI.setClockDivider(SPI_CLOCK_DIV4);
  delay(500);
/*2.4G 射频初始化*/
  lt.begin();  //收发机初始化
  lt.setCurrentControl(15,15);  //配置发射功率(0为最大功率输出)
  lt.setDataRate(LT8900::LT8910_62KBPS);  //配置速率(LT8910_62KBPS,LT8910_125KBPS,LT8910_250KBPS,LT8900_1MBPS),速率越高,通讯距离会越短
  lt.setChannel(0x06);     //配置信道(0.5Mhz为一个间隔从2402Mhz起)
}
 
void loop()
{
    delay(2000);  //发送时间间隔2秒
    uint8_t data[] = { 'h','e','l','l','o' };  //创建数据包数组
    lt.sendPacket(data, 5);  //将数据封包 并发送
    lt.whatsUp(Serial);   //显示调试信息到指定接口(实际使用时请注释掉)
 }

接收机部分代码

/*
 * 收信机
 * 迷你强
 * chenglei1234@gmail.com
   Copyright (C) 2016 迷你强增补
 Copyright (C) 2015 Rob van der Vee"));rob.c.veer@gmail.com>
 
 This program is free software; you can redistribute it and/or
 modify it under the terms of the GNU General Public License
 version 2 as published by the Free Software Foundation.
 */
 
/* Connections:
 
 OCROBOT -> LT8910
 
 GND        GND
 3v3        VCC
 23         PKT
 21         CS
 24         RST
 11         MOSI
 12         MISO
 13         SCK
 
*/
 
#include <SPI.h>
#include "LT8900.h"
 
const uint8_t PIN_NRF_RST = 24;
const uint8_t PIN_NRF_CS = 21;
const uint8_t PIN_NRF_PKT = 23;
 
 
LT8900 lt(PIN_NRF_CS, PIN_NRF_PKT, PIN_NRF_RST);
 
void setup()
{
  // put your setup code here, to run once:
  Serial.begin(9600);
  Serial.println(F("\n\nLT8900 module sample, v0.1.\n\n"));
  /*SPI 初始化*/
  SPI.begin();
  SPI.setBitOrder(MSBFIRST);
  SPI.setDataMode(SPI_MODE1);
  SPI.setClockDivider(SPI_CLOCK_DIV4);
  delay(500);
  /*2.4G 射频初始化*/
  lt.begin();  //收发机初始化
  lt.setCurrentControl(15,15);  //配置发射功率(0为最大功率输出)
  lt.setDataRate(LT8900::LT8910_62KBPS);  //配置速率(LT8910_62KBPS,LT8910_125KBPS,LT8910_250KBPS,LT8900_1MBPS),速率越高,通讯距离会越短
  lt.setChannel(0x06);  //配置信道(500khz为一个间隔从2402Mhz起)
}
 
void loop()
{
    if (lt.available())  //判断缓冲区是否有数据
    {
      uint8_t buf[32];  //创建收信缓冲区(32字节)
      int packetSize = lt.read(buf, 32);   //获取取信息长度,并且将数据存入缓冲区
      if (packetSize > 0)   //判断数据包是否正常,如果-1则CRC校验出错建议抛弃数据包
      { 
        Serial.println(F("Packet read OK"));
 
        for(int i = 0; i < packetSize; i++)   //循环输出数组数据
        {
          Serial.print((char)buf[i]);
        }
        Serial.println();
      }
      else
      {
        Serial.println(F("CRC is ERROR"));
      }
      lt.startListening();   //切换到接收模式
    }
  }

如上,此时,接收机应该能够正常接受并显示发信机发送的字符串hello,如果数据包在传输过程中受损,自动CRC校验功能会发现并且提示CRC错误

下载

原理图:

ALPHA 8F328D-RF.pdf

ocrobot/alpha/8f328d-rf/main.txt · 最后更改: 2017/12/13 07:41 由 董凯萍