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
大家好、朋友。
我的设备有问题。
该器件基于 msp430f5510而构建、由3.6V 电池供电。
通过 SPI (基于 USCI_B)连接到5510、然后将 闪存存储器 AT25256B-SSHL-T 和 CC1120无线电模块连接。 此外、通过 USCI_A、还会对 UART 协议 Modbus 进行定期轮询。
到 MCU 上连接一个外部石英(32768Hz)、ACLK 和 RTC_A 从这个频率上供电。
我决定使用 MCLK = 8MHz、SMCLK = 4MHz、ACLK = XT1 = 32768Hz。
这将提高信息的处理速度并使芯片更快地进入 LPM3。 由于根据数据表、1MHz 频率下的典型功耗为0.25mA、8MHz 频率下的典型功耗= 1.55mA、这会导致6.2与1MHz 之间的差异。 但8MHz 时的处理速度要高8倍、这将使芯片能够在更短的时间内处理命令并进入睡眠状态。
电压为1.8V 的闪存可在5MHz 的频率下运行。 因此、我想将 SMCLK 频率降低到4MHz、这样、当电池电压下降时、也可以在较高的水平上保持闪存和无线电模块的可操作性。
基于上述情况、我得到以下情况。
1) 1)我无法正确计算8MHz 频率的寄存器值。
P5SEL |= BIT4+BIT5; //在 P5.4 и P5.5 UCSCTL6上启用 XIN XOUT |= XT2OFF; //解 ~ XT2 UCSCTL6 &=μ H (XT1OFF); //启用 XT1 UCSCTL6 |= XCAP_3; //使用内部电容 UCSCTL3 = SELREF_2; // DCO FLL 基准= REFO UCSCTL4 = SEL_0; //ACLK = XT1 UCSCTL0 = 0x0000; // //等待 OCS 稳定 DO{ UCSCTL7 &=~XT1LFOFFG; //清除 XT1故障标志 } while (UCSCTL7 & XT1LFOFFG); __bis_SR_register (SCG0); //禁用 FLL 控制 UCSCTL1 = DCORSEL_5; //选择 DCO 范围16MHz UCSCTL2 |= 249; //将 DCO 多倍频器设置为8MHz //(N + 1)* FLLRef = Fdco //(122+1)* 32768 = 4030464 //(249 + 1)* 32768 = 8192000不是8MHz,功率高达1、8V!! _BIC_SR_register (SCG0); //启用控制 FLL // DCO 范围位已 更改时 DCO 的最坏情况趋稳时间//为 n x 32 x 32 x f_MCLK/f_FLL_reference。 有关优化、请参阅5xx // UG 中的 UCS 一章。 // 32 x 32 x 8 MHz / 32、768 Hz = 250000 = MCLK 周期,DCO 要使 __DELAY_CYCLLES (250000)稳定; /****** 初始化 USCI_B UART 模式***** */ UCA1CTLW0 |= UCSWRST; //重置 UART UCA1CTLW0 |= UCSSEL_SMCLK; //CLK = SMCLK //计算端口速度 // 8000000/(16*9600)= 52 //使用系列用户指南 中的表34-6 UCA1BR0 = 52; //800000000 / 16/115200 UCA1BR1 = 0x00; UCA1MCTL |= UCBRS_6 + UCBRF_0 + UCOS16;//设置调制、 UCA1CTL1 &=~UCSWRST; //启动 UART UCA1IE|=UCRXIE; //等待通信请求 UCB1CTL1 |= UCSWRST; //复位 SPI UCB1CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC; //时钟相位+第一个 MSB + SPI 主器件+同步模式 UCB1CTL1 |= UCSSEL_2; //时钟= SMCLK UCB1BR0 = 0x52; //按表39-5 UCB1BR1 = 0; ///////UCB1MCTL = 0;//清除 SPI UCB1CTL1 &=~Ω UCSWRST; // USCI 启动 UCB1IE |= UCRXIE;
但根据我的计算、MCU 频率不是8、000、000、而是8、192、000。因此所获得的分频器未正确应用。
在1.8V 电源下、DCO 频率不能为8192000。 我也不理解如何将 SPI 的 SMCLK 频率正确设置为4MHz。
2) 2)、如果在我的冲突设置期间闪存和 CC1120芯片发生冲突、那么 SPI 的设置是否正确。 它们是具有相同的 SPI 端口模式、还是 CC1120将接受 msp430f5510指示的内容、并且我可以指定闪存的设置。
抱歉、我不熟悉芯片编程。 英语有问题、所以我使用谷歌翻译。 但我需要在一周内修改器件的固件。 因此、为了正确运行、我希望正确配置所有模块、然后完成该功能。
提前感谢您的合作。
您好!
让我快速重复您的问题、以确保我正确理解您的需求:
1) 1)您需要 DCO 频率为8MHz、并且不确定正确的寄存器设置。
2) 2)您希望 SMCLK 为4MHz、并且不确定如何正确配置它。
3) 3)您需要有关正确 SPI 设置的指导。
1) 1)请注意、DCO 指定了一些容差、而给出了特定的频率范围、而不是确切的8000000Hz。 因此、根据用户指南参考、您已正确配置 DCO。 为了更加信任实际 DCO 频率、您可以使用 DCO 校准。
2) 2)实现4MHz SMCLK 的最佳方法是从8MHz DCO 为其计时、并使用2的时钟分频。 用户指南中说明了这一点、您基本上只需设置相应的 DIVS 即可。
3) 3)我不确定我是否完全理解您的挑战。 我假设 MSP430将用作 SPI 主器件、而闪存和 CC1120用作 SPI 从器件。 您是否了解了 SPI 主配置的代码示例? 我建议您从那里开始。
请告诉我这是否适合您、以及如何进一步帮助您入门。
谢谢、此致、
Britta
您好!
Britta、没错。 MCU 是 SPI 主设备。 我查看了此模式下的设置示例。 但问题在于闪存和无线电模块的机制是否一致。 因为处理对它们的调用应以变量的形式在标志上进行、通过计时器中断进行设置。
例如、要通过 RTC_A 中断警报调用使用无线电模块的函数、我将每天在"radioTime"变量中设置一次标志。 要写入闪存、我将每10分钟设置一次"flashTime"标志。 并在闪存上进行记录。
在本例中、我想知道访问闪存和无线电模块时是否必须更改 SPI 端口设置。
在本期中、电流将 UART 模块配置为9600波特率。
数据处理的速度又如何呢? 这是否允许我降低能耗。 稳定处理器频率是否需要任何延迟? 也就是说、当 CPU 从 LPM3退出时、需要一些时间来超频、或者我是否担心没有结果? )
提前感谢。
您好!
在该问题中、我希望正确设置 SPI 接口。 借助 CC1120、我将在标准 FIFO 模式下工作、关于此模式、我将在用户指南中阅读。 我的代码基于1120的 TI 示例。 现在我找到了器件的旧代码、并看到了 SPI 的设置。 外部闪存和 CC1120都是如此。
现在、我将处理与 CC1120通过 SPI 进行的工作。 我想在输入上配置其中一个引脚 MCU (在当前 MCU P2.0中、与 CC1120的 GPIO3连接)。 因此、我被置位
P2SEL = 0x00; P2DIR = 0xFE; P2REN = 0x00; P2IES = 0x01; P2IE = 0x01;
和
{CC112X_IOCFG3、0x06}、
并希望获取 TX 或 RX 末尾的 IRQ。 然后读取 MARK_STATUS、如果操作成功、则进入睡眠模式。
如果有问题、我将在此过程中撰写)。
最好的酒店
非常感谢
您好!
我将努力使这一点得到充分澄清。
我有一个完整的器件。 器件布局已经开发了很长时间、目前无法对其进行更改。
因此、在该方案中使用了 msp430f5510、сс1120 Ω、at25256。
下一对连接:
用于闪存的 P5.0 CS、
сс1120 Ω 的 P5.1 CS。
MSP430 P2.0 - 1120的 GPIO3
MSP430 P5.2 -来自1120的 GPIO2
MSP430 P4.0 -来自1120的 GPIO0
MSP430 P4.1 MOSI
MSP430 P4.2 MISO
MSP430 P4.3 CLK
3线 SPI 总线是 at25256和1120的通用总线。
因此、我还对 at25256和 CC1120的 SPI 的正确设置有疑问。
但是、在查看您站点上1120的代码示例并将其与我之前公司的另一位专家开发的器件代码进行比较后、我发现 at25256和 CC1120的设置是相同的。 主要是不同时向两个 CS 馈送0)。 然后、无需重新配置端口、我们就可以在闪存或 CC1120之间切换。
此时、在 MSP430的设置中、我设置端口2上的中断处理、即 P2IE = 0x01;P2IES = 0x01;对于 P2.0上的上升沿 Look 中断。 在模块1120的 GPIO3上、信号在接收或传输结束时被置位、为此目的、值0x06被写入{CC112X_IOCFG3、0x06}的寄存器。
因此、依靠来自德州的代码示例、我编写代码。
接下来、有一个小问题。 在研究 msp430f5510的头文件时、我没有找到端口4和端口5的中断寄存器(没有 P4IE 和 P5IE、也没有 P4IES 和 P5IES。 如果我理解正确、那么我无法在 I/O 模式(P4SEL = 0x00;P5SEL = 0x00)下跟踪这些 P4和 P5端口上的中断?
最好的酒店
非常感谢