lzy36343 发表于 2024-11-21 10:50:38

厉害

seaWay 发表于 2024-12-4 22:36:20

```
void SPI_Init(void)
{
P_SW2 |= 0x80;                              // 扩展寄存器(XFR)访问使能
P_SW1 |= 0x0c;                              // 启动第四组SPI接口
SPSTAT = 0xc0;                              // 清除标志位
SPCTL = 0xd6;                                 // 忽略SS引脚功能,使能SPI功能,MSB优先,主机模式,下降沿采样数据,速率/4=52/4=13Mhz
IE2 &= 0Xfd;                                  // 关掉SPI中断
DMA_SPI_STA = 0x00;                           // 清零DMA标志位
DMA_SPI_CFG2 = 0x03;                        // 不自动控制SS,SS引脚为P3.5
DMA_SPI_CFG = 0xaa;                           // 1010 1010,SCLK发送时钟,MISO接受信号输入;使能SPI_DMA中断,禁止发送,允许接收。中断优先级3,总线访问优先3
DMA_SPI_CR = 0x81;                            // 允许SPI_DMA功能,开始操作前清空FIFO
DMA_SPI_RXAH = (u8)((u16)&Encoder_Data >> 8); // 通过SPI协议接受到数据后,将数据写入到这个等号右边的这个地址处
DMA_SPI_RXAL = (u8)((u16)&Encoder_Data);          
DMA_SPI_AMT = 2;    // 只传输3个字节
HSSPI_CFG2 |= 0x20; // 启动高速SPI模式
}
```

第12行和第13行的意思是将SPI从MT6701读到的数据写入到Encoder_Data这个数组里面,按照我的理解,应该是Encoder_Data这个字节开始的地址对应RXAL,Encoder_Data这个字节开始的地址对应RXAH,那RXAH是否不应该是 >> 8 的操作而是+8的操作呢?

还是说我理解的不太正确

王昱顺 发表于 2024-12-5 07:53:26

seaWay 发表于 2024-12-4 22:36
```
void SPI_Init(void)
{


这个寄存器的作用是指定spi-dma的读取存放内存地址,是用来存储一个16位长度的内存地址。
Encoder_Data 是一个数组的指针形式,Encoder_Data才是数组元素的形式

seaWay 发表于 2024-12-5 08:30:31

王昱顺 发表于 2024-12-5 07:53
这个寄存器的作用是指定spi-dma的读取存放内存地址,是用来存储一个16位长度的内存地址。
Encoder_Data...

这里是我漏掉了一个点,因为寄存器是2个8位的组成一个16位的地址,而数组的地址是16位的,所以不能直接把数组的地址给到寄存器,而要把数组的地址分成两块,RXAL写地址的低位,RXHL写地址的高位。
还是挺感谢老哥的。

gsggqdhe 发表于 2024-12-10 09:45:22

<p>楼主能否出一个详细的调试视频啊</p>

王昱顺 发表于 2024-12-10 10:02:26

gsggqdhe 发表于 2024-12-10 09:45
楼主能否出一个详细的调试视频啊

安装好后摁一下自动校准按键就可以了,不需要其他操作。
如果校准后运行不好,可能是没校准成功,长按清空参数后重新校准几次就行了

gsggqdhe 发表于 2024-12-10 20:22:20

<p>请教楼主,有遇到转不起来和不停抽搐的情况吗?如何设置呢</p>
<video controls="controls" src="forum.php?mod=attachment&amp;aid=71437"></video>

王昱顺 发表于 2024-12-10 20:32:07

gsggqdhe 发表于 2024-12-10 20:22
请教楼主,有遇到转不起来和不停抽搐的情况吗?如何设置呢

电机线太长了,需要剪短。不然就相当于一个超大的信号干扰源。

gsggqdhe 发表于 2024-12-10 21:24:45

王昱顺 发表于 2024-12-10 20:32
电机线太长了,需要剪短。不然就相当于一个超大的信号干扰源。

已经剪短了,但是结果都一样

王昱顺 发表于 2024-12-11 01:40:59

gsggqdhe 发表于 2024-12-10 21:24
已经剪短了,但是结果都一样

那你可以通过串口输出内部的编码器值,看看是否正常。如果正常就看看电源是不是限流给小了,启动一瞬间会需要大概1a以上的电流。
还有,请查看硬件版本是否为v2,v1版本硬件和软件已经放弃维护了
页: 1 2 3 4 5 6 7 8 9 [10] 11
查看完整版本: 【STC-FOC Lite】 FOC青春版,更少的成本,更简单的构造