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.

[参考译文] CCS/TM4C1294NCPDT:从 FT812显示驱动器板读取芯片 ID

Guru**** 2595770 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/967156/ccs-tm4c1294ncpdt-chip-id-read-from-ft812-display-driver-board

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

我尝试读取芯片 ID、但无法使用 SPI 读取芯片 ID、因此我需要解决方案、因为我提到了我的代码


int main (空)

// uint32_t pui32DataRx[3];
ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

ConfigureUART();

SSI0_int();

while (1)

 PD_Reset ();

Host_Command (HCMD_CLKEXT);

Host_Command (HCMD_ACTIVE);
SysCtlDelay (100);


//在启动期间关闭屏幕输出
 wr8 (REG_GPIOX + RAM_REG、0);//将 REG_GPIOX 设置为0以关闭 LCD DISP 信号
wr8 (REG_PCLK + RAM_REG、0);//像素时钟输出禁用//将物理屏幕的参数加载到 EVE

//所有这些寄存器都是32位的,但大多数位都是保留的,所以只写实际使用的内容
wr16 (REG_HCCYCLE + RAM_REG、HCCYCLE);//将 H_Cycle 设置为548
wr16 (REG_HOFFSET + RAM_REG、HOFFSET);//将 H_Offset 设置为43
wr16 (REG_HSYNC0 + RAM_REG、HSYNC0);//将 H_SYNC_0设置为0
wr16 (REG_HSYNC1 + RAM_REG、HSYNC1);//将 H_SYNC_1设置为41
wr16 (REG_VCYCLE + RAM_REG、VCYCLE);//将 V_Cycle 设置为292
wr16 (REG_VOFFSET + RAM_REG、VOFFSET);//将 V_OFFSET 设置为12
wr16 (REG_VSYNC0 + RAM_REG、VSYNC0);//将 V_SYNC_0设置为0
wr16 (REG_VSYNC1 + RAM_REG、VSYNC1);//将 V_SYNC_1设置为10
wr8 (REG_Swimle + RAM_REG、Swimle);//将混合设置为0
wr8 (REG_PCLK_POL + RAM_REG、PCLK_POL);//将 PCLK_POL 设置为1
wr16 (REG_HSIZE + RAM_REG、HSIZE);//将 H_size 设置为480
wr16 (REG_VSIZE + RAM_REG、VSIZE);//将 V_SIZE 设置为272
WRA8 (REG_CSPREAD + RAM_REG、CSPREAD);//将 CSPREAD 设置为1 (32位寄存器-只写8位)
wr8 (REG_DITHER + RAM_REG、DITHER);//将 DITHER 设置为1 (32位寄存器-只写8位)


void SSI0_int (void)

SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_0);

GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_3);
GPIOPadConfigSet (GPIO_Porta_base、GPIO_PIN_3、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);//将默认状态设为上拉状态。

GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_4|GPIO_PIN_2);

SSIConfigSetExpClk (SSI0_BASE、ui32SysClkFreq、SSI_FRF_MOTO_MODE_1、SSI_MODE_MASTER、1000000、 8);
SSIEnable (SSI0_BASE);


void Host_Command (uint8_t HCMD)

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0x00);
SSIDataPut (SSI0_BASE、HCMD);
SSIDataPut (SSI0_BASE、0x00);//此第二个字节设置为0,但如果需要 fancy、never sets,则重写。
SSIDataPut (SSI0_BASE、0x00);
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);


void PD_Reset (void)(空)

GPIOPinWrite (GPIO_PORTD_base、GPIO_PIN_0、0x00);
SysCtlDelay (ui32SysClkFreq/300);
GPIOPinWrite (GPIO_PORTD_base、GPIO_PIN_0、GPIO_PIN_0);
SysCtlDelay (ui32SysClkFreq/500);


void wr32 (uint32_t 地址、uint32_t 参数)

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、(uint8_t)((地址>> 16)| 0x80);// RAM_REG = 0x302000且高电平位置位-结果始终为0xB0
SSIDataPut (SSI0_BASE、(uint8_t)(地址>> 8));//寄存器地址的下一个字节
SSIDataPut (SSI0_BASE、(uint8_t)地址);//寄存器地址的低字节-通常仅为1字节偏移
while (SSIBusy (SSI0_BASE)){}
SSIDataPut (SSI0_BASE、(uint8_t)(parameter & 0xff));//小端字节序(是的、它首先是最高有效位、然后是最低有效字节)
SSIDataPut (SSI0_BASE、(uint8_t)((参数>> 8)& 0xff);
SSIDataPut (SSI0_BASE、(uint8_t)((参数>> 16)& 0xff);
SSIDataPut (SSI0_BASE、(uint8_t)((参数>> 24)& 0xff);
while (SSIBusy (SSI0_BASE)){}
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);

void wr16 (uint32_t 地址、uint16_t 参数)

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、(uint8_t)((地址>> 16)| 0x80);// RAM_REG = 0x302000且高电平位置位-结果始终为0xB0
SSIDataPut (SSI0_BASE、(uint8_t)(地址>> 8));//寄存器地址的下一个字节
SSIDataPut (SSI0_BASE、(uint8_t)地址);//寄存器地址的低字节-通常仅为1字节偏移
while (SSIBusy (SSI0_BASE)){}
SSIDataPut (SSI0_BASE、(uint8_t)(parameter & 0xff));//小端字节序(是的、它首先是最高有效位、然后是最低有效字节)
SSIDataPut (SSI0_BASE、(uint8_t)(参数>> 8));
while (SSIBusy (SSI0_BASE)){}
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);

void wr8 (uint32_t 地址、uint8_t 参数)

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、(uint8_t)((地址>> 16)| 0x80);// RAM_REG = 0x302000且高电平位置位-结果始终为0xB0
SSIDataPut (SSI0_BASE、(uint8_t)(地址>> 8));//寄存器地址的下一个字节
SSIDataPut (SSI0_BASE、(uint8_t)(address));//寄存器地址的低字节-通常仅为1字节偏移
while (SSIBusy (SSI0_BASE)){}
SSIDataPut (SSI0_BASE、parameter);
while (SSIBusy (SSI0_BASE)){}
GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);

uint32_t rd32 (uint32_t 地址)

uint32_t Data32;

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);


SSIDataPut (SSI0_BASE、(地址>> 16)& 0x3F);
SSIDataPut (SSI0_BASE、(地址>> 8)& 0xff);
SSIDataPut (SSI0_BASE、地址和0xff);

 SSIDataGet (SSI0_BASE、&pui32DataRx[ui32Index]);

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);


Data32 =+(((uint32_t) pui32DataRx[1]<< 8)+((uint32_t) pui32DataRx[2]<< 16)+(((uint32_t) pui32DataRx[3]<< 24);
返回(Data32);

uint16_t 读数16 (uint32_t 地址)

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、(地址>> 16)& 0x3F);
SSIDataPut (SSI0_BASE、(地址>> 8)& 0xff);
SSIDataPut (SSI0_BASE、地址和0xff);

 SSIDataGet (SSI0_BASE、&pui32DataRx[ui32Index]);

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);

uint16_t Data16 = pui32DataRx[0]+((uint16_t) pui32DataRx[1]<< 8);
 返回(Data16);

uint8_t 读数8 (uint32_t 地址)


GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、(地址>> 16)& 0x3F);
SSIDataPut (SSI0_BASE、(地址>> 8)& 0xff);
SSIDataPut (SSI0_BASE、地址和0xff);

SSIDataGet (SSI0_BASE、&pui32DataRx[ui32Index]);

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);

返回(pui32DataRx[0]);

//读取特定的 ID 寄存器,如果它是预期的0x7C,则返回 true,否则返回。
uint8_t Cmd_read_REG_ID (void)

uint32_t pui32DataRx[2];

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、0);

SSIDataPut (SSI0_BASE、0x30);//基址 RAM_REG = 0x302000
SSIDataPut (SSI0_BASE、0x20);
SSIDataPut (SSI0_BASE、REG_ID);// REG_ID offset = 0x00
SSIDataPut (SSI0_BASE、0x00);

SSIDataGet (SSI0_BASE、&pui32DataRx[ui32Index]);//其中第一个字节有虚拟读取

SSIDataPut (SSI0_BASE、0x00);

GPIOPinWrite (GPIO_Porta_base、GPIO_PIN_3、GPIO_PIN_3);


if (pui32DataRx[0]= 0x7C)// FT81x 数据表第5.1节、表5-2。 返回值始终为0x7C


返回1;

其他


返回0;

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 页脚文件   ------------------------------------------------------- > ft812.h

/*
* FT812.h
*
*创建日期:2020年12月20日
*作者:GK
*

#ifndef FT812_H_
#define FT812_H_

//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
//必需功能-硬件驱动程序或特定于环境的其它功能。 抽象化||
//并在 ArduinoAL.h 中找到,或者在您的世界中调用的任何抽象层。 |
//此库需要 SPI、延迟和硬件引脚|的基本支持函数
//控制。 |
//============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
#undef 显示

//同样,如果 Arduino 使用此功能,则需要 C++,但只要 C 完全冷却
//包含在此 extern 声明中(也可以查看文件底部的右括号)

#ifdef __cplusplus
extern "C"{
#endif

#define HCMD_ACTIVE 0x00
#define HCMD_STANDBY 0x41
#define HCMD_SLEEP 0x42
#define HCMD_PWRDOWN 0x50
#define HCMD_CLKINT 0x48
#define HCMD_CLKEXT 0x44
#define HCMD_CLK48M 0x62
#define HCMD_CLK36M 0x61
#define HCMD_CORERESET 0x68

#define CMD_append 0xFFFFFF1E
#define CMD_td 0xFFFFFF09
#define CMD_Button 0xFFFFFF0D
#define CMD_CALIBRATE 0xFFFFFF15 // 4294967061UL
#define CMD_CLOCK 0xFFFFFF14
#define CMD_COLDSTART 0xFFFFFF32
#define CMD_CRC 0xFFFFFF18
#define CMD_DIAL 0xFFFFFF2D
#define CMD_DLSTART 0xFFFFFF00
#define CMD_FGCOLOR 0xFFFFFF0A
#define CMD_Gauge 0xFFFFFF13
#define CMD_GETMATRIX 0xFFFFFF33
#define CMD_GetProps 0xFFFFFF25
#define CMD_GETPTR 0xFFFFFF23
#define CMD_GRADCOLR 0xFFFFFF34
#define CMD_Gradient 0xFFFFFF0B
#define CMD_FINVATE 0xFFFFFF22
#define CMD_INTERRUPT 0xFFFFFF02
#define CMD_keys 0xFFFFFF0E
#define CMD_LOADIDENTITY 0xFFFFFF26
#define CMD_LOADIMAGE 0xFFFFFF24
#define CMD_LOGO 0xFFFFFF31
#define CMD_MEDIAFIFO 0xFFFFFF39
#define CMD_memcpy 0xFFFFFF1D
#define CMD_MEMRC 0xFFFFFF18
#define CMD_MEMHET 0xFFFFFF1B
#define CMD_MEMWRITE 0xFFFFFF1A
#define CMD_MEMZERO 0xFFFFFF1C
#define CMD_NUMBER 0xFFFFFF38
#define CMD_PLAYVIDEO 0xFFFFFF3A
#define CMD_PROGRESS 0xFFFFFF0F
#define CMD_REGREAD 0xFFFFFF19
#define CMD_ROTATE 0xFFFFFF29
#define CMD_SCALE 0xFFFFFF28
#define CMD_SCreensaver 0xFFFFFF2F
#define CMD_scrollbar 0xFFFFFF11
#define CMD_SETBIMAP 0xFFFFFF43
#define CMD_SETFONT 0xFFFFFF2B
#define CMD_SETMATRIX 0xFFFFFF2A
#define CMD_sketch 0xFFFFFF30
#define CMD_SLIDER_0xFFFFFF10
#define CMD_SNAPSHOT 0xFFFFFF1F
#define CMD_spinner 0xFFFFFF16
#define CMD_STOP 0xFFFFFF17
#define CMD_SWAP 0xFFFFFF01
#define CMD_TEXT 0xFFFFFF0C
#define CMD_TOGGLE 0xFFFFFF12
#define CMD_TRACK 0xFFFFFF2C
#define CMD_translate 0xFFFFFF27
#define CMD_VIDEOFRAME 0xFFFFFF41
#define CMD_VIDEOSTART 0xFFFFFF40

#define DLSWAP_FRAME 2UL

#define OPT_CENTER 1536UL
#define OPT_CENTERX 512UL
#define OPT_Centery 1024UL
#define OPT_FLAT 256UL
#define OPT_Mono 1UL
#define OPT_NOBACK 4096UL
#define OPT_NODL 2UL
#define OPT_NOHANDS 49152UL
#define OPT_NOHM 16384UL
#define OPT_NOPOINTER 16384UL
#define OPT_NOSECS 32768UL
#define OPT_NOTICKS 8192UL
#define OPT_RIGHTX 2048UL
#define OPT_signed 256UL

// FT8xx 协处理器命令缓冲区的定义

#define FT_DL_SIZE (8*1024)// 8KB 显示列表缓冲区大小
#define FT_CMD_FIFO_SIZE (4*1024)// 4KB 协处理器 FIFO 大小
#define FT_CMD_SIZE (4)// EVE 的每个协处理器命令4字节

//内存块基址

#define RAM_G 0x0
#define RAM_DL 0x300000
#define RAM_REG 0x302000
#define RAM_CMD 0x308000

//图形引擎寄存器- FT81x 系列程序员指南第3.1节
//定义为偏移量的地址,该地址来自名为 RAM_REG 的基址,位于0x302000
//讨论:通过定义这种方式,可以在代码中执行附加的加法操作,通过定义可以避免该操作
//这些地址为32位值,但在文档的清晰度和兼容性方面,这一点很容易得到补偿。
//此外,您可以在代码中同时添加定义,并允许预编译器执行添加操作(如此处所示)。

#define REG_CSPREAD 0x68
#define REG_DITHER 0x60
#define REG_DLSWAP 0x54
#define REG_HCELE 0x2C
#define REG_HOFFSET 0x30
#define REG_HSIZE 0x34
#define REG_HSYNC0 0x38
#define REG_HSYNC1 0x3C
#define REG_OUTBITS 0x5C
#define REG_PCLK 0x70
#define REG_PCLK_POL 0x6C
#define REG_Play 0x8C
#define REG_RELOAD_FORMAT 0xC4
#define REG_RELOAD_FREQ 0xC0
#define REG_Rplaying_length 0xB8
#define REG_RELOAD_LOOP 0xC8
#define REG_Rplay_play 0xCC
#define REG_RELOAD_READPTR 0xBC
#define REG_RELOAD_START 0xB4
#define REG_PWM_Duty 0xD4
#define REG_Rotate 0x58
#define REG_SOUND 0x88
#define REG_Swizle 0x64
#define REG_TAG 0x7C
#define REG_TAG_X 0x74
#define REG_TAG_Y 0x78
#define REG_VCYCLE 0x40
#define REG_VOFFSET 0x44
#define REG_VOL_SOUND 0x84
#define REG_VOL_PB 0x80
#define REG_VSYNC0 0x4C
#define REG_VSYNC1 0x50
#define REG_VSIZE 0x48

//触摸屏引擎寄存器- FT81x 系列程序员指南第3.3节
//定义为偏移量的地址,该地址来自名为 RAM_REG 的基址,位于0x302000

#define REG_TOUCH 配置0x168
#define REG_TOUCH 变换_A 0x150
#define REG_TOUCH 变换_B 0x154
#define REG_TOUCH 变换_C 0x158
#define REG_TOUCH 变换_D 0x15C
#define REG_TOUCH 变换_E 0x160
#define REG_TOUCH 变换_F 0x164

//电阻式触控引擎寄存器- FT81x 系列编程器指南第3.3.3节-文档混淆
//定义为偏移量的地址,该地址来自名为 RAM_REG 的基址,位于0x302000

#define REG_TOUCH ADC_MODE 0x108
#define REG_TOUCH_CHARGE 0x10C
#define REG_TOUCH DIRECT_XY 0x18C
#define REG_TOUCH DIRECT_Z1Z2 0x190
#define REG_TOUCH 模式0x104
#define REG_TOUCH 过采样0x114
#define REG_TOUCH RAW_XY 0x11C
#define REG_TOUCH RZ 0x120
#define REG_TOUCH_RZTHRESH 0x118
#define REG_TOUCH SCREEN_XY 0x124
#define REG_TOUCH 设置0x110
#define REG_TOUCH 标记0x12C
#define REG_TOUCH TAG_XY 0x128

//电容式触控引擎寄存器- FT81x 系列编程器指南第3.3.4节
//定义为偏移量的地址,该地址来自名为 RAM_REG 的基址,位于0x302000

#define REG_CTOUCH_MODE 0x104
#define REG_CTOUCH_EXPANE 0x108
#define REG_CTOUCH_RAW_XY 0x11C
#define REG_CTOUCH_TOUCH_XY 0x124
#define REG_CTOUCH_TOUCH1_XY 0x11C
#define REG_CTOUCH_TOUCH2_XY 0x18C
#define REG_CTOUCH_TOUCH3_XY 0x190
#define REG_CTOUCH_TOUCH4_X 0x16C
#define REG_CTOUCH_TOUCH4_Y 0x120
#define REG_CTOUCH_TAG 0x12C
#define REG_CTOUCH_TAG1 0x134
#define REG_CTOUCH_TAG2 0x13C
#define REG_CTOUCH_TAG3 0x144
#define REG_CTOUCH_TAG4 0x14C
#define REG_CTOUCH_TAG_XY 0x128
#define REG_CTOUCH_TAG1_XY 0x130
#define REG_CTOUCH_TAG2_XY 0x138
#define REG_CTOUCH_TAG3_XY 0x140
#define REG_CTOUCH_TAG4_XY 0x148

//协处理器引擎寄存器- FT81x 系列程序员指南第3.4节
//定义为偏移量的地址,该地址来自名为 RAM_REG 的基址,位于0x302000

#define REG_CMD_DL 0x100
#define REG_CMD_READ 0xf8
#define REG_CMD_WRITE 0xFC
#define REG_CMDB_space 0x574
#define REG_CMDB_WRITE 0x578

//特殊寄存器- FT81x 系列编程器指南第3.5节
//假定地址被定义为偏移来自被称为 RAM_REG 的基地址且位于0x302000的地址

#define REG_Tracker 0x7000
#define REG_Tracker;1 0x7004
#define REG_Tracker _ 2 0x7008
#define REG_Tracker 3 0x700C
#define REG_Tracker 0x7010
#define REG_MEDIAFIFO_READ 0x7014
#define REG_MEDIAFIFO_WRITE 0x7018

//杂项寄存器- FT81x 系列编程器指南第3.6节-有关基址的不具体文档
//假定地址被定义为偏移来自被称为 RAM_REG 的基地址且位于0x302000的地址

#define REG_CPU_RESET 0x20
#define REG_PWM_Duty 0xD4
#define REG_PWM_Hz 0xD0
#define REG_INT_MASK 0xB0
#define REG_INT_EN 0xAC
#define REG_INT_FLAGS 0xA8
#define REG_GPIO 0x94
#define REG_GPIO_DIR 0x90
#define REG_GPIOX 0x9C
#define REG_GPIOx_DIR 0x98
#define REG_FREQUENCY 0x0C
#define REG_CLOCK 0x08
#define REG_FRAes 0x04
#define REG_ID 0x00
#define REG_TRIM 0x10256C
#define REG_SPI_WIDTH 0x180

//基元类型参考定义- FT81x 系列编程人员指南第4.5节-表6

#define 位图1.
#define points 2.
#define 行3.
#define LINE_STrip 4.
#define EDGE_STACK_R 5.
#define EDGE_STACK_L 6.
#define EDGE_STACK_A 7.
#define EDGE_STACK_B 8.
#define RECTS 9.

//位图布局格式定义- FT81x 系列编程人员指南第4.7节-表7

#define ARGB1555 0
#define L1 1.
#define L4 2.
#define L8 3.
#define RGB332 4.
#define ARGB2 5.
#define ARGB4 6.
#define RGB565 7.
#define TEXT8X8 9.
#define TEXTVGA 10.
#define 条形图11.
#define PALETTED565 14.
#define PALETTED4444 15.
#define PALETTED8 16.
#define L2 17.

//位图参数

#define REPEAT 1.
#define 边框0
#define 最接近的0
#define bilinear 1.

//这些定义的“宏”由 FTDI -来自参数的制造命令位字段提供

// FT81x 系列编程人员指南被称为"FT-PG"

#define CLEAR (c、s、t)((38UL<<24)|((c)&1UL)<<2|((s)&1UL)<<1I|(((t)&1UL)<<0))//清除- FT-PG 第4.21节
#define CLEAR_COLOR_RGB (红色、绿色、蓝色)(2UL<<24)|((红色)&255UL)<<16)|((绿色)&255UL)<<8)|(((蓝色)&255UL)<0)// CLEAR_COLOW_RGB - FT-PG 第4.23节
#define color_RGB (红色、绿色、蓝色)(4UL<<24)|((红色)和255UL)<<16)|((绿色)和255UL)<<8)|(((蓝色)和255UL)<0)// color_RGB - FT-PG 第4.28节
#define VERTEX2II (x、y、handle、cell)((2UL<<30)|(((x)&511UL)<<21)|(((y)&511UL)<<12)|(((Handle)&31UL)<<7)|(((((cell)&127UL)<0)))/TEX2IV)/TRI -段4.48
#define VERTEX2F (x、y)((1UL<<30)|(((x)&32767UL)<<15)|((((y)&32767UL)<0)// VERTEX2F - FT-PG 第4.47节
#define CELL (CELL)((6UL<<24)|((CELL)&127UL)<<0)// CELL - FT-PG 第4.20节
#define BITMAP_Handle (handle)((5UL<<24)|(((handle)& 31UL)<<0))// BITMAP_Handle - FT-PG Section 4.06
#define BITMAP_SOURCE (addr)((1UL<<24)|((addr)& 1048575UL)<0)// BITMAP_SOURCE - FT-PG 第4.11节
#define BITMAP_EN布局(格式、线性、高度)((7UL<<24)|(((格式)&31UL)<<19)|(((线性)&1023UL)<<9)|(((高度)&511UL)<0)// BITMAP_ENTRE - FT-PG 第4.07节
#define BITMAP_SIZE (filter、wrapx、wrapy、width、height)((8UL<<24)|((filter)&1UL)<<20)|(((wrapx)&1UL)<<19)|((((wrapy)&1UL)<<18)|((((((width)&511UL)<<9))/<9) bitmap (tage/<9)/<9)/<9)/<9 (bitmap (tage/<9)/<9)/<9)/<9)/<titmap
#define tag ((3UL<<24)|((s)&255UL)<0)// tag - FT-PG Section 4.43
#define point_size (sis)((13UL<<24)|((s观测)&8191UL)<0)// point_size - FT-PG Section 4.36
#define BEGIN (PrimitiveTypeRef)((31UL<<24)|((PrimitiveTypeRef)&15UL)<0)//开始- FT-PG 部分4.05
#define END ()((33UL<<24))//结束- FT-PG 第4.30节
#define display ()((0UL<<24))// display - FT-PG Section 4.29

//非 FTDI Helper 宏

#define make_color (r、g、b)((r << 16)|(g << 8)|(b))

//全局变量
extern uint16_t FifoWriteLocation;

//函数原型

void PD_Reset (void);

void Host_Command (uint8_t HostCommand);
void wr32 (uint32_t 地址、uint32_t 参数);
void wr16 (uint32_t、uint16_t 参数);
void wr8 (uint32_t、uint8_t 参数);
uint8_t 读数8 (uint32_t RegAddr);
uint16_t 读数16 (uint32_t RegAddr);
uint32_t rd32 (uint32_t RegAddr);

void Send_CMD (uint32_t 数据);
void UpdateFIFO (void);

uint8_t Cmd_read_REG_ID (void);

//小工具和其他重要的屏幕对象

void Cmd_slider (uint16_t x、uint16_t y、uint16_t w、uint16_t h、uint16_t 选项、 uint16_t val、uint16_t 范围);
void Cmd_Spinner (uint16_t x、uint16_t y、uint16_t 样式、uint16_t scale);
void Cmd_Gauge (uint16_t x、uint16_t y、uint16_t r、uint16_t 选项、uint16_t MAJOR、 uint16_t MINOR、uint16_t val、uint16_t 范围);
void Cmd_Dial (uint16_t x、uint16_t y、uint16_t r、uint16_t 选项、uint16_t val);
void Cmd_Track (uint16_t x、uint16_t y、uint16_t w、uint16_t h、uint16_t tag);
void Cmd_number (uint16_t x、uint16_t y、uint16_t font、uint16_t options、uint32_t num);
void Cmd_Gradient (uint16_t x0、uint16_t y0、uint32_t rgb0、uint16_t x1、uint16_t Y1、 uint32_t rgb1);
void Cmd_Button (uint16_t x、uint16_t y、uint16_t w、uint16_t h、uint16_t font、 uint16_t 选项、const char* str);
void Cmd_text (uint16_t x、uint16_t y、uint16_t font、uint16_t options、const char* str);

void Cmd_SetBitmap (uint32_t addr、uint16_t fmt、uint16_t width、uint16_t height);
void Cmd_memcpy (uint32_t dest、uint32_t src、uint32_t num);
void Cmd_GetPtr (void);
void Cmd_GradientColor (uint32_t c);
void Cmd_FGcolor (uint32_t c);
void Cmd_translate (uint32_t tx、uint32_t ty);
void Cmd_Rotate (uint32_t a);
void Cmd_scale (uint32_t sx、uint32_t sy);
void Cmd_Calibrate (uint32_t 结果);

uint16_t CoProFIFO_FreeSpace (void);
void Wait4CoProFIFO (uint32_t Room);
void Wait4CoProFIFOEMpty (void);
void StartCoProTransfer (uint32_t 地址、uint8_t 读取);
void CoProWrCmdBuf (const uint8_t *缓冲区、uint32_t 计数);

uint32_t WriteBlockRAM (uint32_t ADD、const uint8_t *缓冲区、uint32_t 计数);

//面板特定的设置参数

//用户可选配置。

#define EVE2_50


#ifdef EVE2_50

#define DWIDTH 800
#define DHEIGHT 480
#define PIXVOFFSET 0
#define PIXHOFFSET 0
#define HCELE 928
#define HOFFSET 88
#define HSYNC0
#define HSYNC1 48.
#define VCYCLE 525
#define VOFFSET 32.
#define VSYNC0
#define VSYNC1 3.
#define PCLK 2.
#define 混合0
#define PCLK_POL 1.
#define HSIZE 800
#define VSIZE 480
#define CSPREAD 0
#define 抖动1
#endif


#ifdef __cplusplus

#endif


#endif /* FT812_H_*/

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

    e2e.ti.com/.../datasheet_5F00_ft81x.pdfe2e.ti.com/.../FT81X_5F00_Series_5F00_Programr_5F00_Guide.pdf

     AM 会随附适用于从器件接口的 tm4c1294ncpdt 数据表  

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

    您好、Govind、

    您能否在此处分享有关您认为 SPI 模块发生故障的具体情况的更多详细信息?

    我们是 TM4C 器件专家、对此 LCD 屏幕没有任何经验。 如果您对如何使 SPI 模块以特定方式运行有疑问、请描述您需要 SPI 模块如何工作、然后我可以尝试提供指导。 但我无法深入查看 LCD 数据表、然后调试您的应用。

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

    e2e.ti.com/.../1488.datasheet_5F00_ft81x.pdfe2e.ti.com/.../gen4_2D00_ft81x_5F00_datasheet_5F00_r_5F00_1_5F00_2.pdf

    您好 Ralph Jacobi  

    我只想与此显示驱动程序 FT812通信、这是由 SPI 操作的。
    问题是
    1-我无法使用通信设备。
    2-无法读取芯片 ID (0x7c)。
    3-我只想启用芯片并与显示器通信。


    我无法获取使用 sigetdata 的芯片 ID (ssi0、---)

    我已经附加了我的参考代码和其他头文件。

    我希望 jft812芯片处于活动状态并与显示屏通信

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

    我遵循此顺序、但在某些我不知道的地方、我错了。

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

    您好、Govind、

    查看您的 SSI 配置代码、我根本看不到正在配置的 MISO 线路。 如果没有配置数据、您将无法从器件获取数据。 对于 SSI、数据通过 MOSI 从 MCU 发送、并通过 MISO 从目标器件接收。 因此、如果您需要返回数据并使用 SSIGetData、这是您首先需要调整的事情。

    完成此操作后、您还应查看示波器或逻辑状态分析器、以确保根据 LCD 规格以正确的格式发送数据。 如果您发现 MCU 传输数据的方式和显示屏所期望的内容有任何差异、那么您可以对这些内容进行描述、我可以进一步帮助调整 SSI 外设的配置。 需要始终检查的一点是用于极性和相位的 SPI 模式。 您好像使用的是模式1、即低时钟、下降沿锁存。 确保与您的显示屏匹配。

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

    很抱歉   

    这是我在发布时的错误  

    我在更新的代码中经常提到这一行


    void SSI0_int (void)

    SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOD);
    GPIOPinTypeGPIOOutput (GPIO_PORTD_base、GPIO_PIN_0);

    GPIOPinTypeGPIOOutput (GPIO_Porta_base、GPIO_PIN_3);
    GPIOPadConfigSet (GPIO_Porta_base、GPIO_PIN_3、GPIO_Strength _2mA、GPIO_PIN_TYPE_STD);//将默认状态设为上拉状态。

    GPIOPinConfigure (GPIO_PA2_SSI0CLK);
    GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
    GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);
    GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5|GPIO_PIN_4|GPIO_PIN_2);

    SSIConfigSetExpClk (SSI0_BASE、ui32SysClkFreq、SSI_FRF_MOTO_MODE_1、SSI_MODE_MASTER、1000000、 8);
    SSIEnable (SSI0_BASE);

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

    您好、Govind、

    根据 FTDI 芯片的数据表:

    QSPI 从接口的工作频率高达30MHz。 仅支持 SPI 模式0。 有关详细时序规格、请参阅第6.4.2节。 在单通道、双通道或四通道模式下、QSPI 可配置为 SPI 从器件。

    因此、请使用 SSI_FRF_MOTO_MODE_0。

    之后、您需要使用测量器件查看 SPI 信号、以查看输出的内容。 因为否则、这只是盲目调试。  

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

    我在我的代码中更改了这一点、但我没有成功
    我与大家分享 FT812从器件地址的数据表是0x7c
    我正在收集垃圾值请我只想读取芯片 ID 请告诉我用于读取芯片 ID 的工作示例模块。

    github.com/.../Eve2_81x.c

    它是我的 Arduino 参考代码我在 CCS 软件中进行了修改、其中我的故障被混淆、无法读取我的错误  

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

    您好、Govind、

    也许我应该帮助解释我们在 E2E 论坛上提供的内容。 我们是 TI 器件专家、我们会尽力帮助所有客户解决有关器件及其使用方法的问题。 但是、我们不会为定制应用编写与非 TI 组件连接的代码、也不会为这些产品提供相关经验、除非我们为它们提供 BoosterPack。

    根据您在这里提出的要求、您需要我们帮助您根据显示模块的规格来修改代码、以便与您的显示屏进行通信、这超出了我们在这里提供的范围。

    不过、我可以提供有关如何使用 TivaWare 实现您所寻求的功能的指导。 为此、您需要向我提供有关以下内容的更多详细信息:

    1) 1) SPI 总线到显示屏的当前情况

    2) 2) SPI 总线不符合显示屏规格的地方有什么问题。

    了解这些内容后、我可以指导您如何正确调整 TM4C 的 SPI 接口以实现您的目标。 但我无法调试您的应用以了解这些部分。

    我建议您使用示波器并自行监控信号、同时将您获得的波形与数据表进行比较、以便您验证一切是否正常。 如果配置不正确、则返回示波器捕获并告诉我它有什么问题、然后我可以帮助您在 MCU 中解决该问题。

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

    感谢您的响应、您可以使用 SPI 仅共享8位地址读取解码  

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

    您好、Govind、

    我们在以下 TivaWare 文件夹中提供了基本 SPI 演示: [INSTALL Path]\TivaWare_C_Series-2.2.0.295\examples\peripherals\SSI

    SPI_MASTER.c 文件就是您要查找的文件。