资讯详情

PCM开发板模块指令详解--功能指令1

模块推荐:https://item.taobao.com/item.htm?ft=t&id=671629736762

1serial串口初始化指令:

参数1取值0或2。分别代表串口0,串口2.共两个串口。分别代表串口0,串口2.共两个串口。 0是板载的USB

系统使用接口,print,prints通过串口0输出指令;

参数2表示波特率,波特率为9600、19200、38400、57600、115200。

参数3表示要接收的数据寄存器的起始地址,按字节选址。

参数4,串口实际接收的长度,即字节数,保存到这个Dn寄存器。

参数5,串口接收完成后,会位Sn,如果此Sn串口接口注册为中断程序 收完成

后会 程序将执行中断程序。

2serialsend发送串口指令:

参数1取值0或2。分别代表串口0,串口2.共两个串口。分别代表串口0,串口2.共两个串口。 0被系统保留;

参数2表示要发送的数据寄存器的起始地址,按字节寻址。

&bsp;                 参数3,串口要发送的长度,即字节数。

        3        serialgetnum为获取串口接收字节数指令:

                        参数1取值0或2。分别代表串口0,串口2.共2个串口。其中串口 0被系统保留;

                        参数2保存接收的字节数。如果不想用接收中断的方式处理接收的数据,可以用

                这个 指令采取查询的方式处理接收数据,当获取的字节数大于0时,表示有数据被接

                收了。

                例:

                        serial 2 115200 D40 D10 S0 //串口2初始化,波特率115200,接收的数据

                                                                        //保存在D40开始的地址,接收的字节数保存在

                                                                        //D10寄存器,接收完成后S0会被置1

                        Serialsend 2 D20 5 //把D0寄存器的4个字节和D21的第0个字节,共5

                                                        //个字节发送出去

                        serialgetnum 2 D30 //获取串口接收的字节数保存到D30,实际D30=D40;也可以

                                                        //不使用这条指令,通过查询D10的值来处理接收的数据

       

        1         iic为iic初始化指令:注意此IIC是工作在主模式;

                        参数1取值0或1,0表示按8位地址寻址,1表示按16位地址寻址。一般带 IIC接口

                的传感器 都是按8位地址寻址,比如6轴传感器MPU6050;而IIC接口的存储芯片很多是

                16位地 址寻址,比如24C256。

                        参数2通讯速率,单位Hz,一般用100000或400000;

        2         iicwrite为iic写指令:

                        参数1表示从地址,即接口芯片的IIC地址。

                        参数2是接口芯片的寄存器起始地址;

                        参数3是要写的数据;

                        参数4表要写的数据的长度,按字节数;

        3         iicread为iic读指令:

                        参数1表示从地址,即接口芯片的IIC地址。

                        参数2是接口芯片的寄存器起始地址;

                        参数3表示读出来的数据要存储的寄存器起始地址,按字节寻址。

                        参数4表示要读的数据的长度,按字节数;

                例:

                        iic 0 400000 //8位地址寻址,速率400000Hz

                        iicwrite hd0 h1a D0 1 //0xd0是mpu6050的IIC地址,0x1a是被写的寄存器地址,D0                                                 //是要写的数据,写1个字节,即把D0的最低字节写到mpu6050

                                                //的0x1a寄存器里面

                        iicread hd0 h3b D10 6 //0xd0是mpu6050的IIC地址,0x3b是要读的寄存器地址

                                                //起始地址,D10是读出来的数据要存储的起始寄存器,读6个

                                                //字节,即D10里面从低到高字节依次存储4个字节,D11从低到高

                                                //依次存储剩下的2个字节。

       

        1  iicslaver为iic从初始化指令:此IIC是工作在从模式;iic从的内部读写缓存都是128字节;

                参数1--K,设置7位本机从地址;

                参数2--In,使用寻址寄存器In,当主机要读写的寄存器地址(16位地址)保存到此寻址

        寄存器里面, 注意,这里只能寻址整形寄存器Dn;

                参数3--Dn,当主机写的时候,保存写的数据字节长度;

        当主机读的时候,此寄存器值为读缓存长度128字节;

        主机读的是前一次缓存中的数据,所以如果主机要读取最新的数据,主机要连续读2次,且

        中间间隔至少50ms, 从机在第一次主机读的要在读中断中更新缓存中数据,当主机第2次

        读取时就是 最新的数据内容。

                参数4--Sn,读中断,当有主机读的时候,会置位此Sn;

                参数5--Sn,写中断,当有主机写的时候,会置位此Sn;

        2         iicslaverwrite为iic从写缓存指令,把寄存器内容写入发送缓存,待主机读取;

                参数1,待写的数据寄存器起始地址;

                参数2表示要写的数据的字节长度;

        例:

                iicslaver 52 i0 d0 s0 s1 //初始化IIC从,本机从地址52(注意是7位地址),I0保存主机

                                                //要读写的寄存器地址,D0是读写字节长度,

                                                //主读S0置位,主写S1置位

                iicslaverwrite di0 d0 //IIC从更新发送缓存,i0是地址(主写的时候,I0已经保存了要

                                                //写的地址),D0是字节数

        

        1        spi为spi初始化指令:

                        参数1取值0,1,2,3,表示SPI的4种工作模式;

                        参数2是速率,取值请参加下表

参数2取值

0

1

2

3

4

5

6

7

8

9

10

11

12

SPI速度(MHz)

1

2

4

8

9

10

11

13

16

20

26

40

80

        表3         SPI速度取值

        2        spiwrite为spi写指令:        

                        参数1是要写的数据,因为一次性只能写一个字节,所以写的是Dn 的最低字 节;

        3        spiread为spi读指令:

                参数1是读出的数据,因为一次性只能读一个字节,所以读出的字节 存储在Dn 的最低

        字节;

        4        spirw为spi读写指令:同步读写指令,写的同时也把数据读出来;

                参数1是读出的数据,读出的字节存储在Dn的最低字节;

                参数2是要写的数据,写入的是Dn的最低字节;

                例: spi 3 0 //工作模式3,速率2MHz.

                        spiwrite d0 //把d0的最低字节写到spi装置

                        spiread d1 //从spi装置读取一个字节存储到d1的最低字节

                        spirw d1 d0 //把d0的最低字节写到spi装置同时读取一个字节存储到d1的最低字节

                        spirw d1 11 //把值11写到spi装置同时读取一个字节存储到d1的最低字节

        

        1        time为定时器初始化指令:

                        参数1取值0-9,共10个定时器或者计时器;

                        参数2取值0或1,0表示周期性定时器,1表示计时器;周期性定时器会在计时到

                指定时间后 又从头开始计时,如此周而复始。当定时时间到后,会置位Sn,所以可以

                产生周期性中 断;而计时器会一直计时下去,当达到设定值时会置位Sn,产生一个中

                断,然后继续计 时下去,不会从头开始,所以此计时器只会产生一次中断;

                        参数3,当计时到设定值时会置位Sn,如果Sn注册了中断程序,程序会跳 到中断

                程序中执行;

        2        timestart为定时器启动指令:启动定时器;

                        参数1取值0-9,共10个定时器或者计时器;

                        参数2取值0或1,0表示周期性定时器,1表示计时器;周期性定时器会在计时到

                指定时间后 又从头开始计时,如此周而复始。当定时时间到后,会置位Sn,所以可以

                产生周期性中 断;而计时器会一直计时下去,当达到设定值时会置位Sn,产生一个中

                断,然后继续计 时下去,不会从头开始,所以此计时器只会产生一次中断;

                        参数3为设定定时值,单位为us;

        3        timestop为定时器停止指令:定时器停止计时,参数1,2与time指令一样;

        4        timeget为定时器获取计时时间指令:

                        参数1,2与time指令一样;

                        参数3获取当时的计时值,单位为us;

                注意:

                        当参数2为0即定时器设置为周期性定时器时,此指令获取的时间是从timestart指令

                开始到 此指令执行时的时间,但当发生中断时,会重新开始计时,所以读取的值会小于

                等于设 定的周期值;

                        当参数2为1即定时器设置为计时器模式时,此指令获取的时间是从timestart指令开

                始到 此指令执行时的时间,不会因为有中断而重新计时,此时间会一直累加上去。因为

                寄存 器为4字节有负号数,所以最大计时大概35分钟左右;

                例: time 1 0 S0 //初始化周期性定时器1,定时时间到会置位s0.

                        timestart 1 0 1000000 //启动周期性定时器1,定时时间1s.

                        timestop 1 0 //停止周期性定时器1.

                        timeget 1 0 d0 //获取当前的计时值保存到D0寄存器

       

        1        pwm为PWM初始化指令:

                        参数1为脉冲频率,单位Hz;

                        参数2为根据脉冲频率计算出的100%占空比时的值,保存到Dn寄存器;意思就是在

                使用pwmstart 指令启动时,如果设置此值的一半,则占空比就是50%,设置四分之一就

                是25%占空比; 此值会因为频率的变高而减小;

        2        pwmstart为PWM启动指令:

                        参数1为通道,有0-7共8个通道;

                        参数2为占空比设定值,注意设定值不能超过pwm指令输出的Dn值。

        3        pwmsetduty为PWM设置占空比指令:

                        参数1为通道,有0-7共8个通道;

                        参数2为占空比设定值,注意设定值不能超过pwm指令输出的Dn值。

        4        pwmstop为PWM停止指令:

                        参数1为通道,有0-7共8个通道;

                例: pwm 1000 d0 //pwm初始化,d0保存100%占空比的值

                        pwmstart 0 d0 //pwm0启动,100%占空比

                        pwmsetduty 0 d1 //改变占空比,如果d1=d0/2,占空比为50%

                        pwmstop 0 //停止pwm输出

       

        指令说明:

        1         brushmoto为有刷马达初始化指令:

                        参数1为通道,有0-3共4个通道。可以同时驱动4个有刷马达;

                参数2为频率,单位Hz。有刷马达的速度通过改变PWM的占空比来控制;

        2         brushmotomove为有刷马达运行指令:

                        参数1为通道,有0-3共4个通道。

                        参数2为占空比设置,值为正时,马达正转,最大占空比100;为负时马达反转,最

                大占空比-100;

        3         brushmotostop为有刷马达停止指令:

                        参数1为通道,有0-3共4个通道。执行这条指令后,马达控制的2个端口都输出低电

                平。与占 空比设置为0时的效果一样。

                例: brushmoto 1 500 //有刷马达1初始化,频率500Hz

                        brushmotomove 1 60 //马达1以60%占空比运行

                        brushmotostop 1 //马达1停止运行

       

        1        servomoto为舵机初始化指令:此指令可以驱动舵机;也可以通过电调驱动三相无刷马

                达; 频率固定为400Hz,周期为2.5ms。

                        参数1为通道,有0-7共8个通道;

        2         servomotostart为舵机启动指令:

                        参数1为通道,有0-7共8个通道;

                        参数2为输出高电平时间,单位us,最大2500,即2.5ms;

                注意:

                        占空比的计算公式为:占空比=输出时间*100/2500 (%) ;

                        如果是通过电调驱动无刷电机,一般电调的输入控制为1-2ms,即1000-2000us,让

                指令输出这个时间范围就可以让无刷马达从0到最大的速度之间转动;

                        如果是驱动舵机,有些舵机只有正角度,就使用1000-2000us的时间可以让舵机实

                现0到最大角度;有些舵机是正负角度,可能要使用500-1500us的时间输出让舵机实现

                正负角度转动。具体的输出时间需要参考舵机的使用说明书。

                例: servomoto 1 //舵机1初始化

                        servomotostart 1 1500 //输出1500us,启动舵机1,要改变舵机速度, 输出不同的

                                                                //时间就可以了

                        servomotostart 1 1800 //输出1800us,增加舵机速度

标签: d40传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台