This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DRV8308:SSI 通信问题

Guru**** 2392905 points
Other Parts Discussed in Thread: DRV8308

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1462725/drv8308-ssi-communication-problem

器件型号:DRV8308

工具与软件:

大家好、我正在尝试通过 SSI 与 drv8308通信、但每次它的读数都是0xFF。

#include
#include
#include
#include
#include "inc/hw_i2c.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "driverlib/i2c.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/ssi.h"
#include "driverlib/interrupt.h"

uint32_t ui32SysClock;
uint32_t Datarx[3]={0};
uint8_t uartTx[100];

#define REG_ADDR_1 0x01
#define REG_ADDR_2 0x02
#define REG_ADDR_3 0x03

void delayms ( uint32_t ui32Ms )

SysCtlDelay (ui32MS *(120000000 / 3 / 1000));
}

void delayus ( uint32_t ui32U )

SysCtlDelay (ui32U *(120000000 / 3 / 1000000));
}

void init_UART0 (void)

SysCtlPeripheralEnable (SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);

GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);

GPIOPinTypeUART (GPIO_PORTA_BASE、GPIO_PIN_0 | GPIO_PIN_1);

UARTConfigSetExpClk (UART0_BASE、ui32SysClock、1500000、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
}

void uart_0transmit (const uint8_t * str)

uint16_t i = 0;
while (str[i]!='\0')

UARTCharPut (UART0_BASE、str[i]);
I++;
}
}

void init_SSI (void)

SysCtlPeripheralEnable (SYSCTL_PERIPH_SSI0);
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);

GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);

GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);

SSIConfigSetExpClk (SSI0_BASE、ui32SysClock、SSI_FRF_MOTO_MODE_1、SSI_MODE_MASTER、1000000 8);

SSIEnable (SSI0_BASE);

while (SSIDataGetNonBlocking (SSI0_BASE、&Datarx[0]));
}

void init_GPIO (void)

SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOM);

GPIOPinTypeGPIOOutput (GPIO_PORTM_BASE、(GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3));
}

void browser_initial (void)

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_3、GPIO_PIN_3);//启用 drv

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_1、GPIO_PIN_1);// DRV 的复位
delayus(10);
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_1、0);// drv 复位

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_0、0);//使芯片选择变为低电平
GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_2、GPIO_PIN_2);//用于电机断路
}

void SPI_Write (uint8_t Addr、uint16_t data)

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_0、GPIO_PIN_0);

SSIDataPut (SSI0_BASE、Addr);
SSIDataPut (SSI0_BASE、((DATA >> 8)和0xFF);
SSIDataPut (SSI0_BASE、(DATA 和0xFF));

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_0、0);
}

空 SPI_READ (uint8_t Addr)

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_0、GPIO_PIN_0);

SSIDataPut (SSI0_BASE、(Addr | 0x80));
SSIDataPut (SSI0_BASE、0);
SSIDataPut (SSI0_BASE、0);

SSIDataGet (SSI0_BASE、&Datarx[1]);
SSIDataGet (SSI0_BASE、&Datarx[2]);

GPIOPinWrite (GPIO_PORTM_BASE、GPIO_PIN_0、0);
}

int main (void)

ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240)、120000000);

init_ssi();
init_gpio();
init_UART0();
BLOWER_INITIALIZE();

SPI_Write (0x00、0x0002);
SPI_READ (0x00);
memset (uartTx、"\0"、100);
sprintf ((char *) uartTx、"%#X\t\t%#X\n"、Datarx[1]、Datarx[2]);
UART_0TRANSMIT (uartTx);

while (1)

}
}

避免简洁和任何拼写错误

此致、

Hemanth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hemanth、您好!

    感谢您的提问、请在21点前给我时间来回答您的问题。

    此致、

    Sachin S.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的、先生、

    现在、我们尝试移除连接到 SCLK 的上拉电阻器仍然获得相同的结果

    此致、

    Hemanth  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Hemanth:

    您能否分享您的 PCB 原理图?

    谢谢。此致、

    Sachin S.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../5661.drv8308.PDF

    R8未焊接 R7以将其置为0

    此致、

    Hemanth U

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢 Hemanth、

    请给我两天的时间来回复您。

    此致、

    Sachin S.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的先生

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Hemanth、您好!

    在您的代码中、我看到您使用的是 SSI 协议? 该器件仅支持 SPI。

    [报价用户 id="638638" url="~/support/motor-drivers-group/motor-drivers/f/motor-drivers-forum/1462725/drv8308-ssi-communication-problem "]

    GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);

    SSIConfigSetExpClk (SSI0_BASE、ui32SysClock、SSI_FRF_MOTO_MODE_1、SSI_MODE_MASTER、1000000 8);

    SSIEnable (SSI0_BASE);

    [报价]

    另外,请用我的名字打电话给我。

    谢谢。此致、

    Sachin S.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sachin:

     我需要知道 drv8308对写入0x2A 或其他一些寄存器的响应将是什么

    (我们能否使用 SSI 协议写入 drv8308的寄存器)

    此致、

    Hemanth  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Hemanth:

    我认为 SSI 和 SPI 在根本上是不同的? 因此我认为该器件不 能与 SSI 配合使用。

    此致、

    Sachin S.