i2c Linux 动态 波特率,i2c通信通过串口发送数据
#include
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
#define SLAVEADDR 0x90 //定义器件地址
#define nops() do{_nop_();_nop_();_nop_();_nop_();_nop_();} while(0) //定义空指令
sbit SCL = P2^1; //I2C 时钟
sbit SDA = P2^0; //I2C 数据
void delay(uint16 n)
{
while (n--);
}
/**
* 函数: i2c_start()
* 功能: 启动i2c 起始信号
*/
void i2c_start()
{
SCL = 1;
nops();
SDA = 1;
nops();
SDA = 0;
nops();
SCL = 0;
}
/**
* 函数: i2c_stop()
* 功能: 停止i2c
*/
void i2c_stop()
{
SCL = 0;
nops();
SDA = 0;
nops();
SCL = 1;
nops();
SDA = 1;
nops();
}
/**
* 函数: i2c_ACK(bit ck)
* 功能: ck为1时发送应答信号ACK,
* ck为0时不发送ACK
*/
void i2c_ACK(bit ck)
{
if (ck)
SDA = 0;
else
SDA = 1;
nops();
SCL = 1;
nops();
SCL = 0;
nops();
SDA = 1;
nops();
}
/**
* 函数: i2c_waitACK()
* 功能: 返回为0时收到ACK
* 返回为1时没收到ACK
*/
bit i2c_waitACK()
{
SDA = 1;
nops();
SCL = 1;
nops();
if (SDA)
{
SCL = 0;
i2c_stop();
return 1;
}
else
{
SCL = 0;
return 0;
}
}
/**
* 函数: i2c_sendbyte(uint8 bt)
* 功能: 将输入的一字节数据bt发送
*/
void i2c_sendbyte(uint8 bt)
{
uint8 i;
for(i=0; i<8; i++)
{
if (bt & 0x80)
SDA = 1;
else
SDA = 0;
nops();
SCL = 1;
bt <<= 1;
nops();
SCL = 0;
}
}
/**
* 函数: i2c_recbyte( )
* 功能: 从总线上接收1字节数据
*/
uint8 i2c_recbyte()
{
uint8 dee, i;
for (i=0; i<8; i++)
{
SCL = 1;
nops();
dee <<= 1;
if (SDA)
dee = dee | 0x01;
SCL = 0;
nops();
}
return dee;
}
/**
* 函数: i2c_readbyte
* 输入: addr
* 功能: 读出一字节数据
* 返回值: 0->成功 1->失败
*/
bit i2c_readbyte(uint8 com, uint8 *dat)
{
i2c_start();
i2c_sendbyte(SLAVEADDR); //地址
if (i2c_waitACK())
return 1;
i2c_sendbyte(com); //控制字节
if (i2c_waitACK())
return 1;
i2c_start();
i2c_sendbyte(SLAVEADDR+1); //地址
if (i2c_waitACK())
return 1;
*dat = i2c_recbyte(); //读数据
i2c_ACK(0); //因为只读一字节数据,不发送ACK信号
i2c_stop();
return 0;
}
/**
* UART初始化
* 波特率:9600
*/
void uart_init(void)
{
ET1=0;
TMOD = 0x21; // 定时器1工作在方式2(自动重装)
SCON = 0x50; // 10位uart,允许串行接受
TH1 = 0xFD;
TL1 = 0xFD;
TR1 = 1;
}
/**
* UART 发送一字节
*/
void UART_Send_Byte(uint8 dat)
{
SBUF = dat;
while (TI == 0);
TI = 0;
}
main()
{
uint8 ans;
uart_init();
while(1)
{
i2c_readbyte(0x43, &ans);
UART_Send_Byte(ans);
delay(50000);
}
}
i2c Linux 动态 波特率,i2c通信通过串口发送数据相关推荐
- C#串口通信—向串口发送数据,同步接收返回数据
最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...
- C#串口通信-向串口发送数据,同步接收返回数据
最近写C#串口通信程序,系统是B/S架构.SerialPort类有一个DataReceived事件,用来接收串口返回的数据,但这种方式在C/S架构下很好用,但B/S就不好处理了.所以写了一个同步模式接 ...
- i2c Linux 动态 波特率,如何在Linux中设置i2c总线的波特率?
我有一台基于riko-3288处理器的ARM计算机.我还具有带有自定义内核(不带模块系统)的设备的Ubuntu映像. 我目前正在尝试为i2c总线设置最高100KHz的波特率.我不是Linux方面的专家 ...
- python树莓派串口通信实例_树莓派通过串口发送数据
可以通过串口登陆树莓派,也可以通过串口向其他主机发送数据.树莓派的串口接受数据科技爱好者博客已经写过,可以参考这篇文章:树莓派与arduino串口通信实践.这篇文章教大家如果通过树莓派的串口发送数据. ...
- 安捷伦万用表--Agilent34401A数字万用表串口发送数据只上位机使用说明
Agilent34401A数字万用表串口发送数据使用说明 安捷伦34410A万用表可以通过背后的RS232接口与电脑连接,进行串口通信. 仪表的串口有两种工作方式,一种是交互模式–既能接收命令,又能发 ...
- MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据
MJKDZ PS2手柄控制OskarBot小车(一):Arduino串口发送数据 [目录] - 1.无线通信模块设置 - 1.1 设置参数 - 1.2 调试步骤 - 2.按键与通信格式 - 2.1 P ...
- STM32串口发送数据
串口通信经常作为开发调试的工具,所以先介绍下串口通信. 串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,大部分电子设备都支持该通讯方式,电子工程 ...
- 51单片机 串口发送数据(只是发送)
51单片机 串口发送数据(只是发送)用于调试. #include <reg51.h>#define uchar unsigned char #define uint unsigned in ...
- electron+node+node-serialport nodeJs向串口发送数据,自定义收银客显设备
文章目录 一.前言 二.了解客显设备 三.开始操作 index.html main.js 一.前言 electron+node+node-serialport 实现串口通信+electron-buil ...
最新文章
- 编译GCC4.8.2
- 帮小猴子准备的高数知识点
- 用边缘计算为智能制造提速,行业的破局者是他们
- js中的几种跨域方法
- Windows API入门系列之五 -一个正儿八经的SDK程序
- 升级ASP.Net Core项目
- stat函数(stat、fstat、lstat)
- 让zabbix图像中文不再是乱码
- 真机调试 —— An unknown error occurred.
- AcWing 796. 子矩阵的和
- python个人简历爬取_python爬取简历模板
- 强化学习入门1—多臂老虎机Multi-armed Bandits
- Nginx和HA负载
- JAVA学习(三)----常量和数据类型
- c 语言除法运算,C 语言简单加减乘除运算
- 2022年8月最新运维面试题-服务器上下架流程
- 使用python爬取某药品网站药品说明
- 如何用一句话激怒互联网人?
- SAP FICO 批量成本估算
- 潘多拉路由器搭建php,openwrt PandoraBox(潘多拉)如何安装使用SQM QoS
热门文章
- Qt - qmake工具介绍
- 计算机音乐创作比赛作品,2015年(第八届)中国大学生计算机设计大赛“计算机音乐创作类”决赛在我院隆重开幕...
- 每天阅读一个 npm 模块(5)- ee-first
- 【译】二进制代码相似性综述
- 悲惨的阿尔塞斯(全介绍+堕落全解析阿斯)
- Python 的学习脚印(1)
- 使用新的kdevelop,卸载了 visual code 编辑器
- 手把手演示Ngnix+Tomcat实现动静分离
- TeamViewer 连接的远程端 CPU 使用率高
- 天梯赛自主练习4补题 (如果20年去打有机会拿国二吧,国一不太可能,最后俩题都好难啊)