请选择 进入手机版 | 继续访问电脑版
搜索
热搜:
查看: 2688|回复: 5

【转】AS3933软件模拟SPI驱动

[复制链接]

67

主题

149

帖子

4384

积分

论坛元老

Rank: 8Rank: 8

积分
4384
发表于 2015-3-4 13:22:46 | 显示全部楼层 |阅读模式
最近在研究AS3933,在网上搜集了些资料,先贴过来~~

今天在调试AS3933,由于发射端硬件还没做好,接收端的用信号发生器来模拟。经过测试发现AS3933读写正常,特意上传给大家参考下。

#define command  3<<6
#define read     1<<14
#define write    0<<14

#define CS   P13
#define SCL  P14
#define MOSI P15
#define MISO P16

#define wait_cnt1 3

void delay_us(unsigned short cnt)
{
  while(cnt--);
}

void as3933_write_dcommand(unsigned char addr)
{
  unsigned char tmp=0;
  unsigned char i=0;

  addr&=0x3f;
  tmp=addr|command;
  CS=0;
  SCL=0;
  CS=1;
  for(i=0;i<8;i++)
  {                                                         
    if(tmp&(1<<(8-i-1)))
    MOSI=1;
        else
        MOSI=0;
        SCL=1;
        delay_us(wait_cnt1);
        SCL=0;
  }
  MOSI=0;
  delay_us(wait_cnt1);
  CS=0;
}

void as3933_write_byte(unsigned char addr, unsigned char dat)
{
  unsigned short tmp=0;
  unsigned char i=0;

  addr&=0x3f;
  tmp=(((unsigned short)addr)<<8)|dat|write;
  CS=0;
  SCL=0;
  CS=1;
  for(i=0;i<16;i++)
  {                                                         
    if(tmp&((unsigned short)1<<(16-i-1)))
    MOSI=1;
        else
        MOSI=0;
        SCL=1;
        delay_us(wait_cnt1);
        SCL=0;
  }
  MOSI=0;
  delay_us(wait_cnt1);
  CS=0;
}

unsigned char as3933_read_byte(unsigned char addr)
{
  unsigned short tmp=0;
  unsigned char dat=0;
  unsigned char i=0;

  addr&=0x3f;
  tmp=(((unsigned short)addr)<<8)|read;
  CS=0;
  SCL=0;
  CS=1;
  for(i=0;i<8;i++)
  {                                                         
    if(tmp&((unsigned short)1<<(16-i-1)))
    MOSI=1;
        else
        MOSI=0;
        SCL=1;
        delay_us(wait_cnt1);
        SCL=0;
  }
  MOSI=0;
  for(i=0;i<8;i++)
  {               
    SCL=1;
        delay_us(wait_cnt1);
        SCL=0;                                 
    if(MISO)
    dat|=(1<<(8-i-1));
        else
        dat&=~(1<<(8-i-1));
  }
  delay_us(wait_cnt1);
  CS=0;
  return dat;
}
回复

使用道具 举报

1

主题

12

帖子

447

积分

中级会员

Rank: 3Rank: 3

积分
447
发表于 2015-3-16 16:52:46 | 显示全部楼层
兄台,做下来3933感应距离能达到多远啊?我现在画了一块板子只能做到3m左右。
回复 支持 反对

使用道具 举报

53

主题

350

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
43013
发表于 2015-3-16 17:27:04 | 显示全部楼层
2da4vb-107584 发表于 2015-3-16 16:52
兄台,做下来3933感应距离能达到多远啊?我现在画了一块板子只能做到3m左右。 ...

可以发帖询问哦~~以方便更多的网友看到~~
回复 支持 反对

使用道具 举报

0

主题

1

帖子

65

积分

注册会员

Rank: 2

积分
65
发表于 2015-10-30 09:45:15 | 显示全部楼层
爱吃面 发表于 2015-3-16 17:27
可以发帖询问哦~~以方便更多的网友看到~~

有没有配置的例程啊.
回复 支持 反对

使用道具 举报

0

主题

2

帖子

94

积分

注册会员

Rank: 2

积分
94
发表于 2017-7-27 21:10:37 | 显示全部楼层
有没有配置的历程啊,我读写都正常,就是不唤醒奇怪了,怎么使用内部的rc时钟?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

42

积分

新手上路

Rank: 1

积分
42
发表于 2019-4-2 10:12:33 | 显示全部楼层
5楼,我也遇到你这样的问题。请问你是怎么解决的?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|ams社区

GMT+8, 2019-12-15 15:27 , Processed in 0.136754 second(s), 18 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表