0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SPI RTC与摩托罗拉DSP接口

星星科技指导员 来源:ADI 作者:ADI 2023-01-10 11:45 次阅读

本应用笔记提供了用于将串行外设接口(SPI)RTC与内置SPI接口模块的摩托罗拉DSP连接的硬件和软件示例。本示例使用摩托罗拉DSP演示套件作为电路的基础。

DS1306引脚配置

引脚配置

描述

DS1306实时时钟(RTC)可通过3线或SPI™接口与微控制器(μC)或数字信号处理(DSP)单元连接。本应用笔记介绍了如何将DS1306连接至内置SPI接口模块的摩托罗拉DSP。DS1305也可用于此应用。该电路使用摩托罗拉DSP56F800DEMO演示板和CodeWarrior IDE。

使用示例软件

示例软件是从空白项目开始开发的。按照摩托罗拉套件安装指南(教程:创建 CodeWarrior 项目)中的说明进行操作,了解详细信息。在main.c中添加本应用笔记中包含的代码。

操作

该程序使用GPIO端口来控制DS1306上的CE。软件初始化DSP中的SPI控制器模块,将时间和日期写入DS1306。然后,软件循环读取时间和日期。DS1305和DS1306支持SPI模式1和3。

图1所示为该电路的原理图。该电路包括连接到摩托罗拉演示板的子卡。请注意,图1中的电路包括几个带SPI接口的RTC。一次只能使用一个RTC,软件仅支持DS1306。该软件如图2所示。

图 1.DSP56F800演示板的子卡。

图2.演示代码。

/* File: main.c */
/* This example program was developed using the Motorola
56F800 Demo Board Kit. Follow the kit instalation guide
for creating a CodeWarrior Project. Use the shell of the
new project for this example. Note: This program is for
example only and is not supported by Dallas Semiconductor
Maxim. */

#include "port.h"
#include "stdio.h"
#include "stdlib.h"

/*******************************************************
* Main program for use with Embedded SDK
*******************************************************/

extern sampleASM (void);

void reset_spi(void);
void wbyte_spi(unsigned char);
unsigned char rbyte_spi(void);

#define      REG_BASE 0x0000
#define      SPI_BASE 0x0F20
#define      GPIOB_BASE 0x0FC0

#define      SPSCR *(volatile UWord16 *)(SPI_BASE + 0)
#define      SPDSR *(volatile UWord16 *)(SPI_BASE + 1)
#define      SPDRR *(volatile UWord16 *)(SPI_BASE + 2)
#define      SPDTR *(volatile UWord16 *)(SPI_BASE + 3)

#define      GPIO_B_PUR *(volatile UWord16 *)(GPIOB_BASE + 0)
#define      GPIO_B_DR *(volatile UWord16 *)(GPIOB_BASE + 1)
#define      GPIO_B_DDR *(volatile UWord16 *)(GPIOB_BASE + 2)
#define      GPIO_B_PER *(volatile UWord16 *)(GPIOB_BASE + 3)

void main (void)
{
unsigned char      min=0x58, sec=0x59, hr=0x09, dow=0x04, date=0x23,
                         mon=0x10, yr=0x03;

      reset_spi();

      GPIO_B_DR = 0;              // disble RTC - CS low

      GPIO_B_DR = 0x0008;         // enable RTC - CS high
      wbyte_spi(0x8f);            // control register write address
      rbyte_spi();                // dummy read
      wbyte_spi(0);               // disable write protect
      rbyte_spi();
      GPIO_B_DR = 0;              // disble RTC - CS low

      GPIO_B_DR = 0x0008;         // enable RTC - CS high
      wbyte_spi(0x80);            // select seconds register write address
      rbyte_spi();                // dummy read
      wbyte_spi(sec);             // seconds register data

      rbyte_spi();
      wbyte_spi(min);             // minutes register
      rbyte_spi();
      wbyte_spi(hr);              // hours register
      rbyte_spi();
      wbyte_spi(dow);             // day of week register
      rbyte_spi();
      wbyte_spi(date);            // date register
      rbyte_spi();
      wbyte_spi(mon);             // month register
      rbyte_spi();
      wbyte_spi(yr);              // year register
      rbyte_spi();
      GPIO_B_DR = 0;              // disble RTC - CS low

      while(1)
      {
             GPIO_B_DR = 0x0008;         // enable RTC - CS high
             wbyte_spi(0);               // seconds register read address
             rbyte_spi();                // dummy read
             wbyte_spi(0);
             sec = rbyte_spi();          // read seconds register
             wbyte_spi(0);
             min = rbyte_spi();          // ditto minutes
             wbyte_spi(0);
             hr = rbyte_spi();           // and so on
             wbyte_spi(0);
             dow = rbyte_spi();
             wbyte_spi(0);
             date = rbyte_spi();
             wbyte_spi(0);
             mon = rbyte_spi();
             wbyte_spi(0);
             yr = rbyte_spi();

             GPIO_B_DR = 0; // disable RTC - CS low
      }
      return;
}

//SPSCR
//15  14  13  12  11  10  9  8  7  6  5  4  3  2  1
0
// r MSB SPRF ERRIE  ovrf modf spte modfen spr1    spr0    sprie spmstr    cpol cpha
spe  spite

void reset_spi()
{
int   val;
      SPSCR = 0x0096;             // SPR0, SPMSTR, CPHA, SPE
      SPDSR = 0x0007;             // 8-bit size

      SPSCR &= 0xfffd;            // clear spe, resets SPI (partial)
      SPSCR |= 0x0002;            // set spe, new values take effect

      GPIO_B_PER = 0x00f3;        // use GPIOB3 as CS for RTC
      GPIO_B_DDR = 0x000c;        // direction is output
}

void wbyte_spi( unsigned char wbyte)     // ------ write one byte -------
{
      while (!(SPSCR & 0x0200));         // wait for transmitter empty flag

      SPDTR = wbyte;
}

unsigned char rbyte_spi(void)            // -------- read one byte ----------
{
      while (!(SPSCR & 0x2000));         // wait for receiver full flag

      return(SPDRR);
}

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    553

    文章

    7987

    浏览量

    348728
  • 接口
    +关注

    关注

    33

    文章

    8575

    浏览量

    151012
  • RTC
    RTC
    +关注

    关注

    2

    文章

    538

    浏览量

    66458
收藏 人收藏

    评论

    相关推荐

    摩托罗拉c261数据线接口定义图

    摩托罗拉c261数据线接口定义图 
    发表于 06-16 08:20

    摩托罗拉证实裁员计划

             摩托罗拉日前已经证实了业界长期传闻的公司裁员计划。公司
    发表于 06-18 10:49

    摩托罗拉对讲维修手册

    摩托罗拉对讲维修手册  [hide]摩托罗拉对讲维修.rar[/hide]
    发表于 10-14 09:14

    苹果愿向摩托罗拉付专利授权费

    11月1日消息,据国外媒体报道,苹果向威斯康辛州一家法庭表示,愿意向谷歌旗下摩托罗拉移动付费以获得该公司拥有的“标准要素”无线专利授权,但费率不超过每MAX3232EUE+T销售1台iPhone 1
    发表于 11-01 16:50

    摩托罗拉PowerPC 5XX

    摩托罗拉PowerPC 5XX
    发表于 03-25 10:05

    摩托罗拉M-Core系列

    摩托罗拉M-Core系列
    发表于 05-04 23:59

    68008摩托罗拉单板电脑

    描述68008摩托罗拉单板电脑
    发表于 07-13 07:23

    Motorola摩托罗拉(摩托罗拉) C118手机中文用户

    Motorola摩托罗拉(摩托罗拉)  C118手机中文用户手册(使用说明书)
    发表于 12-17 17:31 81次下载

    Motorola摩托罗拉(摩托罗拉) C139手机中文用户

    Motorola摩托罗拉(摩托罗拉)  C139手机中文用户手册(使用说明书)
    发表于 12-17 17:35 42次下载

    Motorola摩托罗拉(摩托罗拉) E680I手机中文用

    Motorola摩托罗拉(摩托罗拉)  E680I手机中文用户手册(使用说明书)
    发表于 12-17 17:46 45次下载

    摩托罗拉VE70

    摩托罗拉VE70  现在所有手机厂商都会推出多种不同色彩的产品以吸引消费者,摩托罗拉公司自然也不例外。日前摩托罗拉公司
    发表于 01-19 10:09 1014次阅读

    摩托罗拉手机案例分析

    1摩托罗拉历史 2 风雨中的摩托罗拉 3摩托罗拉的品牌策略 4摩托罗拉前景展望
    发表于 05-05 17:07 0次下载
    <b class='flag-5'>摩托罗拉</b>手机案例分析

    摩托罗拉Wilder正式发布

    目前已有众多传闻称,摩托罗拉公司将于本月推出其全新高端智能手机——摩托罗拉Droid 3。不过在摩托罗拉Droid 3正式亮相前,摩托罗拉公司则为我们带来了一款入门级手机——
    发表于 06-10 18:13 926次阅读

    接口SPI RTC摩托罗拉DSP

    本应用笔记提供了一个例子的硬件和软件接口的串行外设接口SPIRTC摩托罗拉DSP,有一个内
    发表于 04-12 16:29 18次下载
    <b class='flag-5'>接口</b>的<b class='flag-5'>SPI</b> <b class='flag-5'>RTC</b>与<b class='flag-5'>摩托罗拉</b><b class='flag-5'>DSP</b>

    DS1620与摩托罗拉SPI总线接口

    与DS1620数字温度传感器IC的通信通过简单的3线接口实现。此接口摩托罗拉 SPI 之间存在许多差异™接口。然而,只需对DS1620进行
    的头像 发表于 05-16 11:28 854次阅读
    DS1620与<b class='flag-5'>摩托罗拉</b><b class='flag-5'>SPI</b>总线<b class='flag-5'>接口</b>