OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6344|回复: 4

SPI怎么发送多个数据个数不同的数组

[复制链接]

15

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-3-17
在线时间
6 小时
发表于 2015-7-24 14:38:56 | 显示全部楼层 |阅读模式
5金钱
我用mega16单片机给AD9913的寄存器写指令和数据。它一共有13个寄存器,而且每个寄存器的深度还不一样,最大的有72位,需要写9个8位数据,最少的只有16位,写两个8位数据就够了,请问这个程序该怎么编。我接触单片机的时间不长。刚会用SPI发单个字,一次发那么复杂的东西我没什么思路,请各位大侠赐教,谢谢

最佳答案

查看完整内容[请看2#楼]

GPIO_ResetBits(GPIOB, GPIO_Pin_14);      //CS 低  使能 simulation_spi(0x00); simulation_spi(data_h); simulation_spi(data_l); GPIO_SetBits(GPIOB, GPIO_Pin_14); //CS 高 void simulation_spi(u8 data) { signed  i=0; for(i=7; i>=0; i--) { if((data>>i)&0x01) //先发高 { GPIO_SetBits(GPIOB,& ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
发表于 2015-7-24 14:38:57 | 显示全部楼层
GPIO_ResetBits(GPIOB, GPIO_Pin_14);      //CS 低  使能
simulation_spi(0x00);
simulation_spi(data_h);
simulation_spi(data_l);
GPIO_SetBits(GPIOB, GPIO_Pin_14); //CS 高

void simulation_spi(u8 data)
{
signed  i=0;
for(i=7; i>=0; i--)
{
if((data>>i)&0x01) //先发高
{
GPIO_SetBits(GPIOB, DI); //DI
for_delay(5);  
GPIO_ResetBits(GPIOB, SCK);
for_delay(5); 
GPIO_SetBits(GPIOB, SCK);

}
else
{
GPIO_ResetBits(GPIOB, DI);
for_delay(5);  
GPIO_ResetBits(GPIOB, SCK);
for_delay(5); 
GPIO_SetBits(GPIOB, SCK);
}
}

}
回复

使用道具 举报

15

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-3-17
在线时间
6 小时
 楼主| 发表于 2015-7-24 14:57:16 | 显示全部楼层
求高手赐教呀,小弟再次表示感谢
回复

使用道具 举报

16

主题

147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7140
金钱
7140
注册时间
2015-1-23
在线时间
106 小时
发表于 2015-7-24 18:02:46 | 显示全部楼层
for 循环就行
回复

使用道具 举报

15

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2015-3-17
在线时间
6 小时
 楼主| 发表于 2015-7-28 22:57:42 | 显示全部楼层
回复【4楼】东方赤那:
---------------------------------
谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 10:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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