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.

[参考译文] LAUNCHXL2-RM57L:使用 HTU 来传输值

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/619149/launchxl2-rm57l-using-htu-to-transfer-values

器件型号:LAUNCHXL2-RM57L
主题中讨论的其他器件:HALCOGEN

尝试使 HTU 工作一段时间。 现在、我已经使 N2HET 程序工作(现在只生成一个 PWM、与 SPNA217中的正弦波生成示例中一样)。 但是、当我尝试进行 HTU 传输时、它不想工作。 无论如何、我们都得到了以下代码。 我不使用 HalCoGen、因为我更喜欢创建我自己的函数和所有这些函数、而这种方法的潜在最终用途是我们无法使用它、因为它会生成大量死代码(即使您不打算使用它、也会生成所有代码)、 但希望寄存器名称应该足够有意义。 它应该做的是从大约75%的占空比开始、然后 HTU 启动并将占空比更改为~66%。

int main (void){
//使用 HTU 传输的数据
uint32_t data =(412 << 6);
uint32_t * data_addr =&data;

//
*初始化 HTU
*/
DCP1REG->DCPx[0].ITCOUNT =(1 << 16)|(1 << 0);//执行单个元素传输和单个帧传输
DCP1REG->DCPx[0]。IDDRET <1 |已写入内存(memHET)且内存为1 |(1)。
(1 << 18)|//设置为循环缓冲模式
(0x28 <<0);//设置初始 NHET 地址(ECMP 的数据字段为地址6)
DCP1REG->DCPx[0].IFADDRA =(uint32_t) DATA_addr;//设置主存储器
中的初始地址 HTU1REG->CPENA=1;// DCP[0]=(uint32_t)控制数据包
<TCR<1) //启用 HTU1

//启用 GIOB[6] LED 进行调试
GIOCNTL->GCR0 = 1;
GIOB->DIR |=(1 << 6);

//
*初始化 N2HET
* HTU 连接到 N2HET1
*/
HET1REG->DIR |= 0xFFFF;//启用 N2HET1[0]引脚以进行输出

//设置分辨率预分频器
HET1REG->PFR |=(1 & 0x3F)|(HET1REG->PFR & 0x3F);
HET1REG->PFR |=((6 & 0x7)<8 & 0x7PFR);(HET1REG<8)

HET1REG->REQENS |=(1 << 0);//在第0行启用请求

HET1REG->GCR |=(1 << 24)|//打开引脚
(1 << 17)|//忽略暂挂
(1 < 16)|//设置为主模式
(1 << 0));//启用 HET
//将程序放入内存中
// HET1RAM 是到 N2HET1 RAM 位置的指针。 het1_instructions 是实际的 N2HET 指令
memcpy ((void *) HET1RAM、(const void *) het1_instructions、sizeof (het1_instructions));

while (1){
//检查数据是否正在传输。 如果是、请打开 LED
if ((HTU1REG->BUSY[0]&(1 << 24))!= 0)
GIOB->DSET =(1 << 6);
}

返回0;
} 

下面是 N2HET 程序、以防它有用。 它会以 HET IDE 的形式出现、但 TI 网站似乎不允许我下载任何 HET 汇编器/调试器工具...

#define HET1_LENGTH 4

//针对 N2HET1外设
const het_memory_t het1_instructions[]={

// CNT
//程序
// 000000 0 00001 0110 0 0000 0
// 0000 0000 0000 0010 1100 0010 0000
0x00002C20、
//控制
// 000 01 0 0000000000000001001110000
// 0000 1000 0000 0000 0010 0111 0000
0x08000270,
//数据
0x00000000,
//保留
0x00000000
},

{
// MCMP
//程序
// 000000 000 0 000000011 0000 0 0 0 00000
// 0000 0000 0000 0110 0000 0000
0x00006000,
//控制
// 000 00 0 000 1 000000010 00000 0 1 0 11 00 0
// 0000 0000 0100 0000 0100 0000 0101 1000
0x00404058,
//数据
0x00003400,
//保留
0x00000000
},

{
// MOV32
//程序
// 000000 0 000000011 0100 00001
// 0000 0000 0000 0110 1000 0000 0001
0x00006801,
//控制
// 00000 0 000 0 00000000000000 0 0 01 11 0
// 0000 0000 0000 0000 0000 0000 0000 0000 1110
0x0000000E、
//数据
0x00003400、
//保留
0x00000000
}、

{
//分支
//程序
// 000000 000 0 00000000 1101 0000000
// 0000 0000 0000 0001 1010 0000 0000
0x00001A00、
//控制
// 000 00 0 000 00000000 00000 00000 00000 00 0
// 0000 0000 0000 0000 0000 0000 0000 0000
0000 0x00000000、
//数据
0x00000000、
//保留
0x00000000
}
};
//将指令存储器和指令类型默认值放入联合体
//这更方便方便易用。 指令存储器和
//程序结构将占用相同的存储器空间。
typedef union{
het_memory_t instr_memory[HET1_length];
struct{
CNT L00;
MCMP L01;
MOV32 L02;
BR L03;
}program_struct;
} het1_program;
//实际实例化程序
volatile het1_program het1_program_load; 

我可能只是犯了一个愚蠢的小错误、但如果您能提供任何帮助、我们将不胜感激。 希望所有这些都有意义。 大脑是一个小死,因为它试图弄清楚这一点并长时间盯着它。

-最大值

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

    我们的 NHET 专家将很快与您交流。