我正在研究永磁同步电机的磁场定向控制。我使用定制的硬件,不幸的是我无法通过引脚直接在示波器上看到速度响应和电流信号。因此我需要将数据保存在FM_1808中(F-RAM内存),之后使用FM_1808(F-RAM内存)来绘制信号。我使用结构来保存一个函数中的所有数据,指向该功能。不幸的是,我不能很好地利用弗拉姆,无法提取数据。我需要帮助,以找到我做错了什么,使问题提取数据。谢谢你的帮助将不胜感激。我已经附上了一些代码行,我定义的结构,开始地址和函数提取数据。
define.c
#pragma DATA_SECTION(FRAMAdr,"FRAMData");
volatile struct FRAMAddress FRAMAdr;
连接器命令
page1
{
EXTFRAM : origin = 0x200000, length = 0x008000
}
Sections
{
FRAMData: > EXTFRAM PAGE = 1
}
define.h
struct FRAMAddress {
int16 Dat[32768]; // FRAM 16bit data & 16bit memory
};
extern volatile struct FRAMAddress FRAMAdr;
Uint16 *FRAMStartAdr = (Uint16 *)0x200000;
pheripheral.c
void FSave(Uint16 FAdr, int16 FD1, int16 FD2)
{
FRamAdr.Dat[FAdr] = FD1;
DELAY_US(0.2L);
FRamAdr.Dat[FAdr+5000] = FD2;
}
main.c
extern void FSave(Uint16 FAdr1, int16 FD1, int16 FD2);
{
if(FIndex<=5000)
{
FSave(FIndex, (int16)spd, (int16)(id));
FIndex++;
}
else
{
FSaveflag=0;
}
}
我想寻求有关使用FM_1808(F-RAM存储器)的存储器地址的数据值的帮助。
1条答案
按热度按时间yqkkidmi1#
假设弗拉姆Map到地址0x200000,我猜想您可能需要类似的东西。
注意,我在网上找到的datasheet表明FM1808有32K的8位值,而不是16位值,所以你应该调查一下。
编辑:也不确定你的延迟是需要的还是有意义的。0. 2L的类型是什么?DELAY_US()采用什么参数类型?