CMT2119A是一款常用的全频段单发无线发射芯片,我们使用外部MCU来控制CMT2119A。

1.配置连接图

我们利用MCU的IO来分别控制CMT2119A的DATA和CLK管脚。

2.2线接口(TWI)

2线接口(Two-Write Interface)包括时间接口CLK和双向数据接口DATA。一个完整的W/R过程有16个时钟周期。前8个周期,DATA是输入口;后8个周期,如果是写过程。DATA是输入口,如果是读过程,DATA是输出口。时序图如下(图来自官方数据手册,侵删)

注意:
    1. 时钟应该运行在 1MHz 以下,上升沿发送数据,下降沿采样。
    2. 前 8 个周期为读写控制和地址位 A[5:0]. 其中 W/R 为 1 的时候表示读,为 0 的时候表示写。
    3. 写操作中 D[7:0]为待写入的数据,读操作中 D[7:0]为从芯片读出的数据。
    4. DATA 同时被复用为数据发射的 DATA 脚。
    5. TWI_RST (发送 32 个连续 0 和 0x8D00,总共 48 个时钟的数据,如下图所示)可用于复位 TWI电路,以便在遇到未知错误的时候恢复串口功能。 其中下图的命令适用于上升沿启动发射(默认设置)
    6. SOFT_RST(发送 0xBD01, 总共 16 个时钟的数据, 如下图所示)可用于复位除了 TWI 电路以

外的芯片其他所有电路,整个复位时间约需 1 ms。

7. 方便起见,本文用 TWI_RDREG 表示 TWI 读操作,用 TWI_WRREG 表示 TWI 写操作。
a) TWI_RDREG(XX, YY)为发送 8b’ 11xx xxxx 读出 yyyy yyyy,其中 xx xxxx 为待读地址,范围 0x00 到 0x3F; yyyy yyyy 为读出值,范围为 0x00 到 0xFF。
b) TWI_WRREG(XX, ZZ)为发送 16’ 10xx xxxx zzzz zzzz,其中例如 xx xxxx 为待写地址,范围 0x00 到 0x3F; zzzz zzzz 为待写值,范围为 0x00 到 0xFF。
c) 例如:
i. 从地址 0x01 读取数据表示为 TWI_RDREG(0x1, DAT), 其中 DAT 表示从地址 0x1读出的数据。
ii. 对地址 0x2 写入数据 0xAA 表示为 TWI_WRREG(0x2, 0xAA)。
iii. SOFT_RST 可表示为 TWI_WRREG(0x3D, 0x01)。
8. DATA 是一个双向数据口,在读操作的后 8 个周期会被切换为输出口。为了避免潜在的电平冲突,当 DATA 切换为输出口的时候,主控(Master)相应的驱动端口要及时切换为输入口。

3.配置流程

4.示例程序

#define CMT2119A_WR_CMD (unsigned char )0x80
#define CMT2119A_RD_CMD (unsigned char )0xC0
void TWI_WrByte(unsigned char SendByte)
{unsigned char i = 0;for (i = 0; i < 8; i++){TWI_SCK_H();if (SendByte & 0x80) //MSBTWI_SDA_H();elseTWI_SDA_L();SendByte <<= 1;delay10Us(1);TWI_SCK_L();delay10Us(1);}
}unsigned char TWI_RdByte(void)
{unsigned char i;unsigned char ReceiveByte = 0xff;for (i = 0; i < 8; i++){TWI_SCK_H();ReceiveByte <<= 1;delay10Us(1); TWI_SCK_L();if (TWI_SDA_read())ReceiveByte |= 0x01;elseReceiveByte &= 0xFE;delay10Us(1); }return ReceiveByte;
}unsigned char TWI_RDREG(unsigned char ReadAddress, unsigned char xdata * pData)
{ReadAddress |= CMT211XA_RD_CMD;TWI_SDA_H();TWI_SDA_PUSH_PULL();TWI_SCK_H();TWI_SCK_PUSH_PULL();TWI_WrByte(ReadAddress);TWI_SDA_H();TWI_SDA_OPEN_DRAIN();*pData = TWI_RdByte();TWI_SDA_H();TWI_SDA_OPEN_DRAIN();TWI_SCK_H();TWI_SCK_OPEN_DRAIN();return 1;
}unsigned char TWI_WRREG(unsigned char WriteAddress, unsigned char SendByte)
{WriteAddress |= CMT211XA_WR_CMD;//TWI_SDA_PUSH_PULL();TWI_SDA_H();TWI_SDA_PUSH_PULL();TWI_SCK_H();TWI_SCK_PUSH_PULL();TWI_WrByte(WriteAddress);TWI_WrByte(SendByte);TWI_SDA_H();TWI_SDA_OPEN_DRAIN();TWI_SCK_H();TWI_SCK_OPEN_DRAIN();return 1;
}void TWI_RST(void)
{TWI_SDA_H();TWI_SDA_PUSH_PULL();TWI_SCK_H();TWI_SCK_PUSH_PULL();// DATA pin low for 32 clock cycles and clocking in 0x8D00TWI_WrByte(0x00);TWI_WrByte(0x00);TWI_WrByte(0x00);TWI_WrByte(0x00);TWI_WrByte(0x8D);TWI_WrByte(0x00);TWI_SCK_H();TWI_SCK_OPEN_DRAIN();TWI_SDA_H();TWI_SDA_OPEN_DRAIN();
}void TWI_OFF(void)
{TWI_SDA_H();TWI_SDA_PUSH_PULL();TWI_SCK_H();TWI_SCK_PUSH_PULL();TWI_WrByte(0x8D);TWI_WrByte(0x02);TWI_SCK_H();TWI_SCK_OPEN_DRAIN();TWI_SDA_H();TWI_SDA_OPEN_DRAIN();
}void SOFT_RST(void)
{TWI_SDA_L();TWI_SDA_PUSH_PULL();TWI_SCK_H();TWI_SCK_PUSH_PULL();TWI_WrByte(0xBD);TWI_WrByte(0x01);TWI_SCK_H();TWI_SCK_OPEN_DRAIN();TWI_SDA_H();TWI_SDA_OPEN_DRAIN();
}void FREQUENCY_CONFIG(void)
{unsigned char low_data,high_data;unsigned char regaddr;unsigned short regdat;unsigned char low_rd,high_rd;// step1TWI_RST();// step2SOFT_RST();delayMs(1);// step3TWI_WRREG(0x02, 0x78);// step4TWI_WRREG(0x2F, 0x80);TWI_WRREG(0x35, 0xCA);TWI_WRREG(0x36, 0xEB);TWI_WRREG(0x37, 0x37);TWI_WRREG(0x38, 0x82);TWI_WRREG(0x12, 0x10);TWI_WRREG(0x12, 0x00);TWI_WRREG(0x24, 0x07);TWI_WRREG(0x1D, 0x20);// step5regaddr=0x07; // set frequency reg addrregdat=0xB81F; // set frequency reg dataTWI_WRREG(0x18, regaddr);low_data=regdat%0x100;high_data=regdat/0x100;TWI_WRREG(0x19,low_data);TWI_WRREG(0x1A,high_data);TWI_WRREG(0x25, 0x01);// read registerTWI_RDREG(0x1B,&low_rd);TWI_RDREG(0x1C,&high_rd);//if want set more reg, repeat step5// step6TWI_WRREG(0x0D, 0x02);// send data here
}

CMT2119/2119A 示例代码及说明相关推荐

  1. tf.squeeze示例代码

    官网上对此方法有介绍,但缺少验证示例,而百度上搜到的都是从官网上翻译过来的,正确倒都是正确的,只是缺少验证示例,这边写一个示例代码,希望能帮助理解 import tensorflow as tfk = ...

  2. ASP.NET 2.0 读取配置文件[INI](示例代码下载)

    (一). 功能 操作配置文件[*.ini]类 (二). 代码 1. 核心类文件 INIFILE.cs 代码  1 /// <summary>  2 /// INIFILE 操作类  3 / ...

  3. ASP.NET 2.0 HttpHandler实现生成图片验证码(示例代码下载)

    学习整理了一下 (一).功能 用HttpHandler实现图片验证码 (二).代码如下 1. 处理程序文件 ValidateImageHandler.ashx代码如下  1 <%@ WebHan ...

  4. python目标检测与识别_Python 使用Opencv实现目标检测与识别的示例代码

    在上章节讲述到图像特征检测与匹配 ,本章节是讲述目标检测与识别.后者是在前者的基础上进一步完善. 在本章中,我们使用HOG算法,HOG和SIFT.SURF同属一种类型的描述符.功能代码如下: impo ...

  5. 云开发使用 got 的 get/post 传参请求示例代码

    使用 got 进行网络请求的步骤: 1.创建云函数,并在终端执行云函数 2.执行 npm 安装 got ,命令:cnpm install --save got 3.在云函数中使用 示例代码: // 云 ...

  6. Unity 简单示例代码和向导/Unity Aplication Block

    Unity 简单示例代码和向导 关于Unity 的说明和下载地址,请访问[微软控制反转和依赖注入容器Unity 1.0发布] http://forum.entlib.com/Default.aspx? ...

  7. 装饰器的定义、语法糖用法及示例代码

    1. 装饰器的定义 就是给已有函数增加额外功能的函数,它本质上就是一个闭包函数. 装饰器的功能特点: 不修改已有函数的源代码 不修改已有函数的调用方式 给已有函数增加额外的功能 2. 装饰器的示例代码 ...

  8. 闭包的介绍、构成条件、作用及示例代码

    1. 闭包的介绍 我们学过了函数,我们知道当函数调用完,函数内定义的变量都销毁了,但是我们有时候需要保存函数内的这个变量,每次在这个变量的基础上完成一些列的操作,比如: 每次在这个变量的基础上和其它数 ...

  9. python积分管理系统_python实现每天自动签到领积分的示例代码

    自动签到的python脚本源码 新建一个python文件,checkin.py,保存到电脑上某个位置,我这里保存到的是E:\pyproject\checkin.py # 引入3个包 from sele ...

最新文章

  1. 计算机图形学——三角形网格
  2. ubuntu 中 pip 出现 ModuleNotFoundError: No module named ‘pip._internal‘
  3. 作弊阴影罩棋盘,人工智能咋避嫌?
  4. 【Android 安全】DEX 加密 ( Application 替换 | Android 应用启动原理 | ActivityThread 后续分析 | Application 替换位置 )
  5. 认真工作的原因以及方法
  6. 一个运维老将的自我修养
  7. 在 Windows 7 中禁用IPv6协议/IPv6隧道
  8. 新空间,新文章,新气象,哈??
  9. 攻防世界 适合做桌面_网络安全工程师教你:如何使用Kali Linux进行渗透测试与攻防实战...
  10. linux下pwd命令学习
  11. OpenCasCade拓扑几何(拉伸,扫略,旋转)
  12. 【机器学习实战】利用朴素贝叶斯算法(naive_bayes)实现新闻分类
  13. Amazon,我们完全不能接受 — 因此我们必须变更 Elastic 许可协议
  14. tiny4412开发板Android篇_3基于tiny4412的Android系统的烧写(SD卡烧写到emmc)
  15. 大点干!早点散----------深入剖析LVS负载均衡群集原理
  16. php显示cpu温度,cpu温度过高怎么办
  17. 彻底理解 Linux 的搜索工具: grep 和 awk
  18. BCD编码和ASCII码
  19. [svn]svn conflict 冲突解决
  20. php设计模式-适配器

热门文章

  1. 计算机使用的显示器主要有两类,2015年计算机专转本预测题及答案
  2. 淘宝店铺产品排名是靠人气的吗?影响因素有哪些?
  3. DICOM:开源DICOM服务框架DCM4CHE 构建
  4. 【深度学习】大牛的《深度学习》笔记,Deep Learning速成教程
  5. 大数据之数据仓库建设(二)
  6. 武汉的樱花开了!出不了门别担心,线上带你开樱花![Python画樱花]
  7. #单调栈#洛谷 2947 向右看齐
  8. Java 求解买卖股票时机含冷冻期
  9. 六款高效学习软件——程序员必备
  10. 3.3.1-取词干和词形还原