关于调试stm32和stm8(51单片机)的i2c和spi协议的之间的区别

发布者:学思者最新更新时间:2015-09-21 来源: eefocus关键字:调试stm32  stm8  i2c  spi协议 手机看文章 扫描二维码
随时随地手机看文章
在调试STM32的i2c和io口模拟spi协议时发现时序是很关键的。stm32在72M运行下可以实现i2c或者spi协议,但并不代表把相同的代码移植到51单片机上就会成功的跑起来,因为51单片机的速读最块8M,所以在时序上会产生很多大的区别。
经过测试,在stm32上的spi协议时钟线可达到20Khz,移植到51后,频率会降到<10hz。可是尽管把延时调小或者去掉还是无济于事,此时就要加几句把钟线置高置低的语句了 以便增大的速度,后来成功后,测试时钟线的确达到了10Khz左右。
先贴上部分代码
unsigned char ReadRawRC(unsigned char Address)
{
     unsigned char i, ucAddr;
     unsigned char ucResult=0;
 
     MF522_SCK = 0;
     MF522_NSS = 0;
     ucAddr = ((Address<<1)&0x7E)|0x80;
 
     for(i=8;i>0;i--)
     {
         MF522_SI = ((ucAddr&0x80)==0x80);
         MF522_SCK = 1;//stm32上没有
         ucAddr <<= 1;
         MF522_SCK = 0;
     }
 
     for(i=8;i>0;i--)
     {
         MF522_SCK = 1;//stm32上没有
         ucResult <<= 1;
         ucResult|=(bit)MF522_SO;
         MF522_SCK = 0;
     }
 
     MF522_NSS = 1;
     MF522_SCK = 1;
     return ucResult;
}

关键字:调试stm32  stm8  i2c  spi协议 引用地址:关于调试stm32和stm8(51单片机)的i2c和spi协议的之间的区别

上一篇:关于spiflash存储器读写一个字节的问题方案
下一篇:调试STM8/stm32串口时发现的问题

推荐阅读最新更新时间:2024-03-16 14:32

用P89C664实现I2C总线大批量数据的自动存储
引言 在实际工作中,有些情况下可能需要对一些I2C接口发出的数据进行分析,如果数据较少则比较容易解决。比如可以直接把数据保存到单片机的RAM中,然后通过LED显示出来,但如果数据量很大,这种方法就很河取了。在这种情况下,想办法把大量的数据保存到电脑里是一个比较好的方法这样不但可以解决大批量数据的存储问题,同时也易于编辑、分析和打印。 但是,电脑的外设接口中是没有I2C接口的,因此需要对I2C部迟疑不决的数据进行转换,使之能发往电脑,实现数据的文件存储。综合各种因素考虑,采用UART串口的方式比较方便,因为串口技术简单、应用广泛、各种应用软件也较为丰富。 本文不仅介绍了如何实现I2C数据的转发和自动存储,同时也介绍了P8
[嵌入式]
STM8 PS2接口应用子程序
软件设计 /********************************************************************* 目 的: 建立PCF8563操作库 目标系统: 基于STM8单片机 应用软件: Cosmic CxSTM8 *********************************************************************/ #include ws_i2c.h void PS2_Init(void) { PRESS_DATA_DDR; SHIFT_DATA_DDR; IN_SDA; } void check(void
[单片机]
STM32模拟I2C程序
/******************************************************************************* 测试平台:STM32F103ZET6最小系统 *******************************************************************************/ static void i2cDelay() { volatile int i = 7; while (i) i--; } // SCL高电平期间,SDA出现下降沿为起始信号 static bool i2cStart() { SDA_OUT;
[单片机]
STM8框架使用指引
一、概述 编写该框架是为了避免一个很尴尬的情况:一个公司几位工程师,每位工程师看似合作,但提交的代码却是框架各异、风格迥然,你看我的代码别扭,我看你的代码费神……这些都增加了沟通成本、出错成本,不利于项目维护和传承。新接手的工程师看到一堆充满异域风情的代码时,可能会仰望天空45°留下入错行的悔恨泪水…… 该框架的最上层使用lw_oopc构建,使C语言具备了面向对象的能力,亲测效果很好,易用性、可移植性、可阅读性都很好。希望大家一起努力,沉淀出一套简洁的、稳定的、充满活力的框架,有了一个稳定的基础,妈妈再也不用担心一些无脑的bug了~ 二、组织架构 如上图,以ST官方驱动包为基础,构建基础驱动包,两者都
[单片机]
<font color='red'>STM8</font>框架使用指引
STM8开发环境搭建(修订版)
之前写的有些步骤是狗屁不通,不知道为何没有人反馈,我主要是记录给自己看,本来我是想好好写的,写到最后一步,删除的时候用了Backspace键,结果尼玛返回到上一页了,还有上传图片还自己手动输入宽度,要不然不显示,希望有关人员能够改进,否则都没有人写博客了...... 编译的时候会出现这样的错误(我之前写的6,7,8都是废话,请忽视掉) 解决方法是: 如上图所示,就那么简单填写下,什么库丢失啊,这些问题都可以解决掉.
[单片机]
<font color='red'>STM8</font>开发环境搭建(修订版)
STM8 可配置时钟输出寄存器
STM8可配置时钟输出寄存器 地址偏移值:0x09 复位值:0x00 位7 保留。始终为0。 位6 CCOBSY:可配置时钟输出忙 由硬件置位或清除。用于指示所选的CCO时钟源正处于切换状态或稳定状态。当CCOBSY为1 时,CCOSEL位域将被写保护。CCOBSY保持为1直至CCO时钟被使能。 0:CCO时钟空闲 1:CCO时钟忙 位5 CCORDY:可配置时钟输出准备就绪 由硬件置位或清除。用于指示CCO时钟的状态 0:CCO时钟可用 1:CCO时钟不可用 位4:1 CCOSEL :可配置时钟输出源选择 由软件写入。用于选择CLK_CCO管脚上的输出时钟源。当CCOBSY=1时,该位域被写保护。 0000:fHSI
[单片机]
<font color='red'>STM8</font> 可配置时钟输出寄存器
stm8 硬件SPI
第一步:stm8 SPI简介 在配置SPI相关寄存器时要注意时钟信号的相位和极性。 这次我们使用的是stm8驱动SO-8封装的DAC8830,使其输出一个方波。 DAC8830引脚说明和时序: CS是片选信号,低电平有效。 SCLK在下降沿的时候启动传输,上升沿的时候传输完成。MSB在前,就是高位在前。 实际电路是按照DAC8830数据手册的典型应用电路做的。 只是输出部分没有加运放,VREF引脚没有连接。 再看stm8的SPI主模式: 第二步:SPI相关寄存器 设置时钟极性CPOL和相位CPHA仅需设置SPI_CR1的第0位和第1位。 第三步:具体实现
[单片机]
<font color='red'>stm8</font> 硬件SPI
STM8学习经验
第一节: 心情和时钟 我只是想和大大们交流一下,哪怕是对的或者是错的,大大们满足我的一点心愿吧。 唠叨了这么多,现在开始吧。 配置: stvd , cosmic 我学单片机开门三砖总是要砸的。 第一砖: 电源系统,这没什么好说的,只是它是stm8工作的基础总是要提一下 第二砖: 时钟系统,这等下再说。 第三砖: 复位系统,stm8只需要一只104电容从reset脚到地就可以了。 现在说说时钟系统,学习单片机无论8位的还是32位的,都要从时钟开始,下面是我一开始的时钟切换程序。 1 CLK_ECKR |=0X1; //开启外部时钟 2 while(!(
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved