需要确认注册邮箱后才能开通博客,立即确认我的邮箱
文章 搜索 高级搜索 ?3? ?3?
  • 滤波器new!
  • LED驱动 new!
  • 新能源 new!
  • PLL
  • PCIE协议
  • 可穿戴
  • LSI
  • FCI
文章 论坛 博客 小组 研讨会
EDN China>EDN论坛>模拟器件技术论坛专区>ADIS16223的SPI程序
楼主 问题:

ADIS16223的SPI程序

发布时间:2011-12-20 下午4:40

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
ADI工程师您好:
????? 我有个问题想请教您下,ADIS16223的寄存器地址与数值均为16bit。而常用SPI通讯均为8bit,我查阅了ADIS16223的datasheet,看到其波形图显示为发送格式为R/W+A6~A0+D7~D0后CS端置高。然后经过16个SMCLK周期后设置有效。我的问题是在“给寄存器高8位地址写数据”与“给寄存器低8位地址写数据”这两个事件之间该如何设定?我的程序为
void? SPI_ADIS_write(uchar waddr,ulong wdat)
{
? uchar i;
? uint? j;
? _BIC_SR(GIE);
? P3OUT &= ~BIT0;?????????????? //使能16223的CS片选端
? for(j=0;j<15;j++);??????????? //延时16个SMCLK时钟
? UCB0TXBUF =waddr+1;?????????? //写寄存器地址(高8位)
? while (!(UCB0IFG&UCTXIFG));?? //等待寄存器地址发送完成

? UCB0TXBUF =wdat>>8;?????????? //写数据高8位???
? while (!(UCB0IFG&UCTXIFG));?? //等待数据发送完毕
?
? P3OUT |= BIT0;??????????????? //禁止16223的CS片选端
? for(j=0;j<15;j++);??????????? //延时16个SMCLK时钟
? P3OUT &= ~BIT0;?????????????? //使能16223的CS片选端


? UCB0TXBUF =waddr;???????????? //写寄存器地址(低8位)
? while (!(UCB0IFG&UCTXIFG));?? //等待寄存器地址发送完成

? UCB0TXBUF =wdat;????????????? //写数据低8位???
? while (!(UCB0IFG&UCTXIFG));?? //等待数据发送完毕
? for(j=0;j<15;j++);????? //延时16个SMCLK时钟
? _BIS_SR(GIE);
}?
中间这段红色部分是否需要?请尽快回复,谢谢

分享到:? 新浪微博 ?? 微信 ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
qq空间 ?? 腾讯微博 ?? 人人网 ?? 百度搜藏 ??
?
???标签: it
EvelynZhang 编辑于 2012-2-9 上午10:30
引用 回复 收藏 推荐到小组 ( 0) ( 0) 关注

EDN China电子设计技术再谈苹果iPhone的隐私安全问题,这次泄密的可能还有摄像头
第1楼

回复主题:ADIS16223的SPI程序

发布时间:2011-12-21 下午3:40

作者: ADI_aaron

等级: 中级工程师

积分: 1406分

发帖数: 761次

网站总积分: 2205分

849分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
楼主,你好, 这两次数据传输之间只要保证Tstall这个时间间隔即可。当你的SPI是8bit时,如果使用SPI的SELx引脚去控制CS脚,这时是需要注意的。因为每次8bit的数据传输,通常SELx都会自动toggle(假设低电平有效),而ADIS16223的CS要保证在16个bit内为低,这时可以使用GPIO去控制CS。
引用 回复
( 0) ( 0)


EDN China电子设计技术Exar公司电源VP视频推荐三款新品
第2楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-22 下午7:03

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
非常感谢您的回复,在程序中我设置的SPI通讯SCLK为1MHZ,因此Tstall值还是超过15.4us的。我在测试中尝试将DIO1与DIO2都设置为I/O输出引脚并设为高电平输出: SPI_ADIS_write(DIO_CTRL,0x0003);//设置DIO1与DIO2为I/O引脚 SPI_ADIS_write(GPIO_CTRL,0x0303);//设DIO1和DIO2为输出引脚 //设DIO1和DIO2为高电平 结果仅仅DIO1输出高电平,而DIO2依然为低电平,这是为何呢?请帮忙分析下(我已将1楼程序的时序进行了修改,先发送低8位地址和数据再发送高8位的)。
引用 回复
( 0) ( 0)


EDN China电子设计技术这次我们不回顾,我们要评判苹果WWDC16推了哪些“鸡肋”
第3楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-22 下午7:10

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
另外SPI读程序部分论坛中有人提出“当然在读数据的时候要注意在写要读的寄存器的地址的时候,在数据线DOUT上已经输出数据了,而且是一个寄存器的高8位,而这个寄存器是你上次访问的寄存器地址,并不代表是你现在写的寄存器地址。读寄存器的时候都是读两遍,以保证第二次读的数据就是你要访问的寄存器。再读写数据之前,不需要其它的初始化工作了。”这样的判断,是不是就是说每次读寄存器地址时都需要连续读两次寄存器低8位地址再读高8位地址才行呢?这样的话不是相当于3个16bitSPI时钟周期了吗?
引用 回复
( 0) ( 0)


EDN China电子设计技术看蓝牙音频传输对音质影响有多大,蓝牙音箱在为谁背“锅”?
第4楼 回复主题: 发布时间:2011-12-26 下午6:21

作者: ADI_aaron

等级: 中级工程师

积分: 1406分

发帖数: 761次

网站总积分: 2205分

849分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
楼主可以先去配置DIO1/2为输出,然后再去配置其电平高低。对于读寄存器不需要连续读两次寄存器(先低8位,再高8位)。附件中是ADIS16227的参考代码,可以参考一下。
附件:
ADIS16227_DemoCode.zip 下载次数: ?45 资源分:?0
???标签: 资料下载
引用 回复
( 0) ( 0)


EDN China电子设计技术为什么需要无电晕的定制磁性器件解决方案
第5楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-27 上午10:52

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
uchar SPI_byte_rw(uchar TX_data)
{
uchar RX_data;
UCB0TXBUF =TX_data; //写8位数据
while (!(UCB0IFG&UCTXIFG)); //等待寄存器地址发送完成
UCB0IFG &= ~UCTXIFG; //清除发送完成标志位
while(!(UCB0IFG&UCRXIFG)); //接收数据
RX_data = UCB0RXBUF;
return RX_data;
}
?
uchar SPI_ADIS_read(uchar raddr)
{
uint i; uchar hi_data,lo_data;
ulong data;
P3OUT &= ~BIT0; //使能16223的CS片选端
SPI_byte_rw(raddr);
SPI_byte_rw(0x00);
for(i=0;i<16;i++); // 16us延迟
hi_data=SPI_byte_rw(0x00);
lo_data=SPI_byte_rw(0x00);
P3OUT |= BIT0; //禁止16223的CS片选端
data=(hi_data<<8)+lo_data;
for(i=0;i<16;i++); // 16us延迟
return data;
}
然后主程序中执行
m=SPI_ADIS_read(PROD_ID);
n=SPI_ADIS_read((PROD_ID+0x01)); 分别读取ID号的低8位和高8位。结果n值总是读出00。请问高8位ID到底为何读不出来呢?但低八位ID号读出来却没有问题
kegebodxs 编辑于 2011-12-27 上午11:36
引用 回复
( 0) ( 0)


EDN China电子设计技术这次我们不回顾,我们要评判苹果WWDC16推了哪些“鸡肋”
第6楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-27 上午11:56

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
5楼的程序找到问题点了。是由于我高8位移位的问题导致没有读出数据,只需要写一次低8位地址即可。谢谢ADI工程师的帮助。
??? 另外我在SPI_write部分依然碰到DIO2不能设置的问题:我通过SPI同时设置DIO1和DIO2为输出引脚,然后再设置其高电平。
SPI_ADIS_write_byte(DIO_CTRL,0x03);????? //设置DIO1与DIO2为I/O引脚
SPI_ADIS_write_byte(GPIO_CTRL,0x03);???? //设置DIO1和DIO2为输出引脚
SPI_ADIS_write_byte(GPIO_CTRL+1,0x03);? //设置DIO1和DIO2为高电平
结果DIO1输出高电平,而DIO2依然是低电平,我读取GPIO_CTRL寄存器数据后发现其低8位值为0x03,而高8位值为0x01,也就是说DIO2的高电平位没有设置成功,请问DIO2的设置有什么特殊要求吗?
kegebodxs 编辑于 2011-12-27 下午2:11
引用 回复
( 0) ( 0)


EDN China电子设计技术HTC Vive 与 Oculus Rift拆解:是哪些硬件将我们从现实带入虚拟世界?
第7楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-28 下午5:13

作者: 醉红尘

等级: 新新人类

积分: 236分

发帖数: 51次

网站总积分: 237分

119分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
找到问题点,谢谢ADI工程师帮助。次贴结贴
引用 回复
( 0) ( 0)


EDN China电子设计技术为企业工业互联网的落地,他们成立了一个智能制造实验室
第8楼 回复主题:ADIS16223的SPI程序 发布时间:2011-12-28 下午7:27

版主

作者: EvelynZhang

等级: 殿堂级工程师

积分: 20335分

发帖数: 5913次

网站总积分: 33066分

16431分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
谢谢告知。楼主能分享如何解决的问题吗?
引用 回复
( 0) ( 0)


EDN China电子设计技术一文览尽谷歌I/O大会热点,教你如何做生态链最顶端的人
第9楼 回复主题:ADIS16223的SPI程序 发布时间:2012-4-1 下午4:42

作者: shenmiao0330

等级: 初学者

积分: 64分

发帖数: 7次

网站总积分: 118分

50分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
不知楼主能把代码贴出来吗??
引用 回复
( 0) ( 0)


EDN China电子设计技术我们在测量信道工作余量时,能否避免犯测量抖动时的相同错误?
第10楼 回复主题:ADIS16223的SPI程序 发布时间:2013-5-25 下午2:58

作者: cmliang

等级: 初学者

积分: 104分

发帖数: 2次

网站总积分: 104分

104分

发送消息

加为好友

查看用户的所有发言

查看用户的个人主页

需要确认注册邮箱后才能下载,立即确认我的邮箱
回复后可下载附件
谢谢告知
引用 回复
( 0) ( 0)

上一帖????ADF4360-8和ADF4...
AD9235调试问题????下一帖??

快速回复 高级回复
用户名:?
美国的游客?????? (您将以游客身份发表,请登陆 | 注册) ?
标题: * 标题还可以输入80
评论: * 你还可以输入30000
验证码: ?*?
分享: 新浪微博?? qq空间?? qq微博?? 人人网?? 百度搜藏??
维护专业、整洁的论坛环境需要您的参与,请及时举报违规帖子,如果举报属实,我们将给予相应的积分奖励。
谢谢您的热心参与!
返回模拟器件技术论坛 | 返回专业技术交流区
本论坛仅陈述专家或个人观点,并不代表EDN China 电子技术设计互动社区网站立场。

本版热门贴子

视频
?analog.com官网全线升级

在线研讨会
产品新闻
返回论坛页首
有问题请反馈