主题中讨论的其他器件: TM4C123
工具/软件:Code Composer Studio
尊敬的所有人
有人能不能建议如何从微控制器 tm4c129xnczad 向 DAC ad5791发送20位数据。 我在 ssiconfigsetexpclk 中看到的数据仅为4至16位。 请告诉我如何操作
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.
工具/软件:Code Composer Studio
尊敬的所有人
有人能不能建议如何从微控制器 tm4c129xnczad 向 DAC ad5791发送20位数据。 我在 ssiconfigsetexpclk 中看到的数据仅为4至16位。 请告诉我如何操作
尊敬的所有人:
我正在使用 eval ad5791板并尝试与德州仪器的 tm4c129x 通信。 我正在通过串行接口(SSI)发送数据。 但我无法获得任何输出。 我已检查 VDD=14V VSS=-14、Vcc=3.3V iovcc=3.3V、LDAC=0、RESET =1 CLR=1、在这种情况下、LDAC 被并行地短接至 GND。 .reset 是 iovcc 短接。 CLR 处于逻辑1、我是
以8位模式发送数据、因此我在3个周期内发送数据。 在我第一次发送数据0x20012时。 然后是0x1ffff 以获得最大输出、但我无法获得任何输出。 请帮助我获取输出。 我随附了该代码
include "stdbool.h"
#include "stdint.h"
#include "gpio.h"
#include "rom_map.h"
#include "sysctl.h"
#include "hw_memmap.h"
#include "pin_map.h"
#include "ipt32x2_duattrab.id_u32h
;
包含"tidt32nattr.ipt.id_u32nath #include "u32nattr.ipt.id_u32nath;包含"u32nattr.ipt.id.id_u32nath #t.id_u32nath #t.id_u32nath
和 ipt/ipt.id_u32nath #t.ipt.id.id.id.id.idt.id.idt.u32nath #include "u32nath;t.id.id.id.idt.idt.u32nath #t.id.
void DAC_normal (void);
void DAC_LDAC (void);
#define GPIO_PA2_SSI0CLK 0x0000080F
#define GPIO_PA3_SSI0FSS 0x00000C0F
#define GPIO_PA4_SSI0RX 0x0000100F
#define GPIO_PA5_SSI0TX 0x0000140F
#define NUM_SSI_DATA 3
#define SYS_TICK 延迟10000
uint32_t ui32SysClock;
void DAC_LDAC ()
{
MAP_SysCtlPeripheralEnable (SYSCTL_Periph_GPIO);
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTS_BASE、GPIO_PIN_7);//同步脉冲
MAP_GPIOPinTypeGPIOOutput (GPIO_PORTS_BASE、GPIO_PIN_6);//CLR 为高电平
MAP_GPIOPinWrite (GPIO_PORTS_BASE、GPIO_PIN_7、GPIO_PIN_7);//同步脉冲高电平
MAP_GPIOPinWrite (GPIO_PORTS_BASE、GPIO_PIN_6、GPIO_PIN_6);
}
void DAC_normal()
{
pui32DataTx = 0x200312;
SSI_DATA ();
// pui32DataTx = 0x400002;
// SSI_DATA ();
}
void SSI_DATA ()
{
pui32DataTx1= pui32DataTx & 0x0000ff;
pui32DataTx2=(pui32DataTx & 0x00ff00)>> 8;
pu32DataTx3=(pu32DataTx3=(pinu_pitu0_gpin0_gpitx)
;pini32_gpit_gpio0 (pin0_pin0_pin0_gpin0_gpioport);pin0_pin_pio0、pin0_
pui32DataTx3);
MAP_GPIOPinWrite (GPIO_PORTS_BASE、GPIO_PIN_6、0);/SYNC 低电平
while (SSIBusy (SSI0_BASE))
{
}
SSIDataPut (SSI0_BASE、pui32DataTx2);
while (SSIBusy (SSI0_BASE))
{
}
SSIDataPut (SSI0_BASE、pui32DataTx1);
while (SSIBusy (SSI0_BASE))
{
}
SSIIntClear (SSI0_BASE、SSI_RXFF);
MAP_GPIOPinWrite (GPIO_PORTS_BASE、GPIO_PIN_7、GPIO_PIN_7);//同步高
电平}
int main (void)
{
ui32SysClock = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |SYSCTL_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_320)、
10000000);
SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);
GPIOPinConfigure (GPIO_PA4_SSI0RX);
GPIOPinConfigure (GPIO_PA5_SSI0TX);
DAC_LDAC ();
MAP_GPIOPinWrite (GPIO_PORTS_BASE、GPIO_PIN_7、GPIO_PIN_7);
GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);
SSIConfigSetExpClk (SSI0_BASE、SysCtlClockGet ()、SSI_FRF_MOTO_MODE_0、
SSI_MODE_MASTER、100000、8);
SSIEnable (SSI0_BASE);
DAC_NORMAL ();
while (1)
{
pui32DataTx = 0x1fff;
SSI_DATA();
}
//返回0;
}