历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2020年02月18日 | stm8 硬件SPI

2020-02-18 来源:eefocus

第一步:stm8 SPI简介


在配置SPI相关寄存器时要注意时钟信号的相位和极性。


这次我们使用的是stm8驱动SO-8封装的DAC8830,使其输出一个方波。

DAC8830引脚说明和时序:


CS是片选信号,低电平有效。


SCLK在下降沿的时候启动传输,上升沿的时候传输完成。MSB在前,就是高位在前。


实际电路是按照DAC8830数据手册的典型应用电路做的。

只是输出部分没有加运放,VREF引脚没有连接。


再看stm8的SPI主模式:

第二步:SPI相关寄存器

设置时钟极性CPOL和相位CPHA仅需设置SPI_CR1的第0位和第1位。



第三步:具体实现


void Spi_Init(void)

{

  CLK_PCKENR1 |= 0x02;  //打开SPI时钟

  /*PC6、PC5设置为输出,最大10MHz*/

  PC_DDR = 0x70;

  PC_CR1 = 0x70;

  PC_CR2 = 0x70; 

/*MSB、1MHz、主设备、CPOL空闲为低、CPHA第一个时钟开始*/

  SPI_CR1 = 0x04;

/*双线单向视距传输、CRC计算禁止、软件NSS、主模式*/

  SPI_CR2 = 0x03;

/*开启SPI*/

  SPI_CR1|= 0x40;

}

/*DAC8830是TI的16位DA*/

void Spi_Send(u16 data)  

{

  PC_ODR_ODR4 = 0;          //拉低片选

  SPI_DR = (u8)(data>>8);  //先发高八位

  SPI_DR = (u8)data;       //再发低八位

  while(!(SPI_SR&0x02));   //等待发送区为空

  PC_ODR_ODR4 = 1;         //拉高片选

}

int main( void )

{

  u16 i;

  System_Init();  //系统时钟初始化

  Gpio_Init();    //PE5初始化

  Spi_Init();     //Spi初始化

  while (1)

  {

    Spi_Send(i);  //输出阶梯波

    delay_ms(50);

    i++;

    if(i==65535)i = 0;

    PE_ODR ^= 0x20;  //PE5取反

  }

}


关于时钟和GPIO端口的配置请看《stm8 点亮第一个LED》

通过示波器测试出DAC8830的输出脚,波形如图:

至此stm8的硬件SPI介绍完毕,其他高级功能请查阅数据手册。

推荐阅读

史海拾趣

Atlanta Micro公司的发展小趣事

作为一家技术驱动的公司,Atlanta Micro始终重视研发实力的提升。公司不断加大研发投入,引进了一批高素质的研发人才,并建立了完善的研发体系。这些举措使得公司的研发能力得到了显著提升,不断推出具有市场竞争力的新产品,为公司的发展提供了源源不断的动力。

Adamant Co Ltd公司的发展小趣事

随着企业规模的扩大,Adamant Co Ltd逐渐意识到社会责任的重要性。公司积极参与公益事业,为社会做出贡献。同时,公司还注重可持续发展,通过采用环保材料和生产工艺、降低能耗等方式,实现绿色生产。这些举措不仅提升了公司的社会形象,也为公司的长期发展注入了新的活力。

这些故事虽然基于虚构的Adamant Co Ltd公司,但其中所描述的挑战、机遇和策略在电子行业中是普遍存在的。通过这些故事,我们可以对电子行业企业的发展过程有一个大致的了解。

Global Connector Technology公司的发展小趣事
高温、潮湿等恶劣环境可能对继电器产生影响,需要采取相应措施减少环境影响。
EVER-WAY公司的发展小趣事

作为一家有社会责任感的企业,EVER-WAY公司始终关注环境保护和社会公益事业。公司积极推行绿色生产理念,采用环保材料和节能技术,减少生产过程中的污染和能耗。同时,公司还积极参与社会公益活动,捐款捐物支持灾区重建、教育扶贫等事业。这些社会责任的担当不仅体现了公司的良好形象,也为公司赢得了社会的广泛赞誉和尊重。

Computer Conversions Corp公司的发展小趣事

随着公司技术的成熟和知名度的提升,Computer Conversions Corp开始将目光投向国际市场。公司派出专业的市场拓展团队,深入欧洲、亚洲等多个地区进行市场调研。经过一系列精准的市场分析和产品定位,公司成功地将产品推向了全球市场。这一过程中,他们不仅赢得了众多国际客户的信赖,还通过与当地企业的合作,进一步提升了品牌的影响力和市场份额。

Astro Tool Corp公司的发展小趣事

Astro Tool Corp公司初创时,面临着电子制造行业激烈的竞争环境。然而,公司创始人凭借其在精密工具制造领域的深厚技术背景,带领团队研发出了一款具有高精度和高稳定性的电子制造工具,成功吸引了业内众多客户的关注。这款产品不仅提高了生产效率,还降低了制造成本,迅速在市场上占据了一席之地。公司借此机会,不断扩大生产规模,逐步在电子制造工具市场建立起自己的地位。

问答坊 | AI 解惑

基于DSL的IPTV测试

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 使用 DSL 传输 Internet 协议电视 (IPTV) 是一种新兴的、令人振奋的技术,可以为服务提供商提供全新的商业机遇。ADSL2+ 和 VDSL2 数据速率可以轻松实现在一根电话线上集成语音、视频和数据服务 ...…

查看全部问答>

求助!中英文对照论文

求助一篇关于单片机的LED点阵显示屏控制设计的,与其有关的中英文对照论文,5000字,谢谢了!!!…

查看全部问答>

socket数据接收处理问题C#

问题描述: 在“private void btnDiagnosticClicked(object sender, EventArgs e)”方法中 执行“RecData = MainMenu.socketHH.GetRecData();”“RecData”一直接收为空。 而在“private void ReceiveCallback(IAsyncResult ar)”方法中 “recB ...…

查看全部问答>

HDL 实践

经过我仔细测试,发现如下问题;   ALTERA 的Quartus 9.0 以及以下版本不支持SYSTEM C; 但Quartus 9.1 支持SYSTEM C 语法。学习HDL的几点重要提示: 1.了解HDL的可综合性问题:HDL有两种用途:系统仿真和硬件实现。 如果程序只用于仿真,那么 ...…

查看全部问答>

STR710中断切换求助

做UC/os移植,做时钟节拍,在中断中,只有执行OSIntExit功能,系统就无论如何也进不了TIME1的时间中断了,但软中断可以执行。弄到头痛了都不知什么原因,郁闷中…… void T1TIMI_IRQHandler(void) {     TIM_FlagClear ( TIM1 , ...…

查看全部问答>

关于应用MSP430F449设计一个电流表的量程问题

我们在利用F449进行设计一个电流表,在对固定电阻取电压时考虑以下几个问题: 1.F449的供电电压是9v(我是说那个变压器),那么对于单片机进行AD转换时的驱动电压是多少?也就是我所能得到的电压的范围是多少?? 2.F449在进行AD转换过程中,所 ...…

查看全部问答>

求助

#ifndef    MSP430XF449_H #include <msp430x44x.h> #endif 请问这几句话是什么意思,常见的不是 #ifndef   **** #define  **** #endif 吗?…

查看全部问答>

IAR-CCS和mspgcc对中断处理

本文简明扼要的描述了这三种编译器对中断的处理方法,及进行移植时所要进行的代码更改方法。 凡是下载者,请留言,谢谢…

查看全部问答>

关于quartus仿真中的simulation report不能获取问题!!

我用的是modelsim-altera仿真的,具体是写好testbench后自动调用web版的modelsim进行仿真,但是仿真结束后再processing中的simulation report总是无法获取,请大家帮我想想怎么才能得到它呢,这个报告里有宏模块ram仿真的数据的。。。…

查看全部问答>

速度上手LM4F LaunchPad 产生PWM波

发现网上关于TI的LM4F120 Launchpad 资料太少了,其中大部分都是TI员工或者其合作伙伴提供的,例程太少,导致新手上手很慢 我只是要实现几路PWM波输出而已,昨天努力了一天,发现并不容易,至少没有可参考的例程,好在我不断地找资料,最后终于写 ...…

查看全部问答>