这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 天空网由的樱花板进程

共48条 5/5 |‹ 1 2 3 4 5 跳转至
高工
2012-12-07 10:39:20     打赏
41楼
经测试不管有没有改过IDE文件,在使用某些库时都会报错……不知道是不是测试方法有问题……

院士
2012-12-07 14:56:37     打赏
42楼
甭研究了。
avr 我觉得有点老了。会被后浪拍在沙滩上的。

高工
2012-12-07 16:11:49     打赏
43楼
只是想在搞某些小东西的时候编程简单点,刚刚接触这个东西,想了解一下…………然后再拍在沙滩上也无所谓……

院士
2012-12-07 19:51:23     打赏
44楼
前些天看有一个与之类似的编译环境也可以提供库函数方式的编程,CooCox,工具也不大,但由于时间关系一直没有仔细研究。

等着过年的时候,稍微有空,我也搞一搞

高工
2012-12-08 11:19:39     打赏
45楼
资料持续更新:
<板载资源说明>

<开发板图>

<接口使用说明>

<跳接说明>




……………………………………………………时间挤挤会有的………………………………
下面来一个樱花板的原理图:
——回复可见内容——

助工
2012-12-13 09:32:15     打赏
46楼
不错不错

高工
2012-12-16 01:29:50     打赏
47楼
IIC通信和SD卡今天终于更新了……………………

高工
2012-12-26 10:02:47     打赏
48楼
SPI总线学习
先来看看Arduino官方的SPI库:
    此库允许使用Arduino板子作为主机与其他的SPI设备进行通信。SPI接口是一种同步的数据传输协议。用于实现微控制器与一个或者多个其他设备之间的短距离数据通信。当然它也可以完成两个微控制器之前的数据通信,在SPI的连接中,通常会有一个主机(一般是微控制器)用于控制其它的外围设备。一般情况下,所有的连接中都有三根通信信号线:
MISO -- 主机输入,从机输出。从机线,用于从机向主机发送数据。
MOSI -- 主机输出,从机输入。主机线,用于主机向从机发送数据。
SCK -- 串行时钟线。由主机控制,用于控制数据传输的同步。
同时Arduino还可以指定一条SS线 -- 主机可以通过每个设备上的SS引脚来使能或禁止用与对应从机的数据通信。当它为高时,对应的从机会忽略主机的通信动作。当它为低时,对应的设备和主机可以正常通信。这样就允许在同一个主机的同一个SPI外设上挂接多个SPI从设备,它们共享相同的MOSI,MISO,SCK线。
    在编写一个新的从机对应的通信代码时,需要注意以一几点:
    (1) 数据移位的顺序,是高位在前还是低位在前,这个可以使用函数SPI.setBitOrder()来进行设置。
    (2) 时钟线空闲时是高电平还是低电平,数据的采样发生在上升沿还是下降沿,这些模式可以使用函数SPI.setDataMode()来设置。
    (3) SPI总线通信的速率,这个可以使用SPI.setClockDivider()来设置。
    SPI总线标准比较宽松,不同的器件或设置之前存在着一些差异。这就意味着,我们在对一个器件编写接口程序时要特别留意其器件手册中相关的说明。
    一般情况下,SPI有4种不同的传输模式,这些模式的区别主要在于:
    (1) 数据是在时钟线的上升沿移入还是在时钟线的下降沿移入(称为时钟相位);
    (2) 空闲状态下时钟线是高电平还是低电平(称为时钟极性)。
    这四种模式如下表:

模式

时钟极性(CPOL)

时钟相位(CPHA)

SPI_MODE0

0

0

SPI_MODE1

0

1

SPI_MODE2

1

0

SPI_MODE3

1

1


    根据上表,在调用SPI.setDataMode()函数时填写相应的参数即可对极性和相位进行控制。
    每个SPI接口的器件都有一个最大通人速率,函数SPI.setClockDivider()允许指定一个合适的通信速率(默认为4MHz)。
1. 函数简要说明:
begin() -- 通过设置SCK,MOSI,SS为输出,拉低SCK,MOSI,拉高SS引脚等操作来初始化SPI总线。
end() -- 禁用SPI总线,但是SPI总线初始化时配置的IO引脚模式会保持不变。
setBitOrder() -- 设置SPI总线上数据移位的先后顺序(高位在前或低位在前).
setClockDivider() -- 设置SPI总线时钟相对于系统时钟的分频器。
setDataMode() -- 设置SPI总线数据格式(时钟极性及相位)。
transfer() -- 通过SPI总线传输一个字节,包括发送和接收数据。
2. 详细说明:
setBitOrder()
语法:SPI.setBitOrder(order)
            SPI.setBitOrder(slaveSelectPin,order) 【Arduino Due Only】
参数:order -- LSBFIRST或MSBFIRST
            slaveSelectPin -- 从机使能引脚(SS),【Arduino Due Only】

setClockDivider()
语法:SPI.setClockDivider(divider)
            SPI.setClockDivider(slaveSelectPin,divider)【Arduino Due Only】
参数:slaveSelectPin -- 同setBitOrder()
            divider -- SPI_CLOCK_DIV2 【基于AVR的Arduino开发板】
                         -- SPI_CLOCK_DIV4
                         -- SPI_CLOCK_DIV8
                         -- SPI_CLOCK_DIV16
                         -- SPI_CLOCK_DIV32
                         -- SPI_CLOCK_DIV64
                         -- SPI_CLOCK_DIV128
                         -- 当然如果是Arduino Due开发板的话,该参数可以是一个1-255的数值。

setDataMode()
语法:SPI.setDataMode(mode)
            SPI.setDataMode(slaveSelectPin,mode)
参数:mode -- SPI_MODE0
                        -- SPI_MODE1
                        -- SPI_MODE2
                        -- SPI_MODE3
            slaveSelectPin -- 同前面的setBitOrder()

transfer()
语法:SPI.transfer(val)
            SPI.transfer(slaveSelectPin,val)
            SPI.transfer(slaveSelectPin,val,transferMode)
参数:val -- 要发送的字节内容
            slaveSelectPin -- 从机的SS引脚控制(Arduino Due Only)
            transferMode -- SPI_CONTINUE:保持SS引脚一直为低,允许后续字节的传输。
                                     -- SPI_LAST:默认值,如果未填 写该参数的情况下为该值,在一个字节传输完成后,SS引脚会被拉高(Arduino Due Only).
返回:从总线上读到的数据字节。

共48条 5/5 |‹ 1 2 3 4 5 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]