在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在MAXQ3180微控制器上使用串行外設接口

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-01-16 09:30 ? 次閱讀

MAXQ3180微控制器為電表的多相模擬前端。它集成了現(xiàn)代多功能電能計量所需的所有功能。MAXQ3180通過串行外設接口(SPI?)總線將其讀數(shù)傳送給主機微控制器。本應用筆記描述了該接口是如何完成的,并提供了示例代碼,以幫助設計人員實現(xiàn)通信機制。

SPI概述

串行外設接口 (SPI) 是一種設備間總線協(xié)議,可在芯片之間提供快速、同步、全雙工通信。一個器件(主設備)驅動同步時鐘,并選擇多個從站中的哪一個被尋址。每個SPI外設由一個移位寄存器控制電路組成,因此尋址串行外設接口SPI外設同時發(fā)送和接收。

pYYBAGPEqLOADbrlAAALt5HL6dM046.gif?imgver=1

圖1.SPI 從站的插圖。

SPI通信中使用了四種分立電路:

SCLK:所有設備使用的同步時鐘。主站驅動此時鐘,從設備接收時鐘。請注意,SCLK 可以門控,不需要在 SPI 事務之間驅動。

莫西:主人出來,奴隸進來。這是由主站驅動到SPI總線上所有從機的主數(shù)據(jù)線。只有選定的從站時鐘從MOSI數(shù)據(jù)。

MISO:主人進,奴出。這是由選定的從站驅動到主站的主數(shù)據(jù)線。只有選定的從機可以驅動該電路。事實上,它是SPI總線布置中唯一允許從站驅動的電路。

SSEL:信號對于每個從站都是唯一的。當活動(通常為低電平)時,所選從機必須驅動MISO。

對于此討論,必須注意SPI外設同時發(fā)送和接收。想到這一點的一個方便方法是,主站總是發(fā)送一個字節(jié)并接收一個字節(jié)。

一些SPI外設犧牲了速度,轉而模擬半雙工操作。 MAXQ3180微控制器不是這種情況,它是一款真正的全雙工SPI從機。

本應用筆記的其余部分介紹如何在SPI總線上連接并成功使用MAXQ3180。

MAXQ3180通信概述

對于主機(即主機)來說,MAXQ3180看起來像一個由RAMROM組成的存儲器陣列。這是因為MAXQ3180中的ROM固件從RAM讀取其工作參數(shù),并將結果放在RAM中。因此,配置MAXQ3180就像對其RAM位置進行塊寫入一樣簡單。

一些MAXQ3180“存儲器”位置觸發(fā)器件內的動作,以“動態(tài)”計算電能計量結果。寫入這些位置是“nop”。RAM 和虛擬 ROM 位置的具體功能和用途超出了本文檔的范圍。這里重要的事實是,微控制器實際上只有兩種SPI通信操作:讀取和寫入。

MAXQ3180中的每個事務都從主站發(fā)送兩個字節(jié)開始,其中包含命令(即讀或寫)、訪問地址和訪問字節(jié)數(shù)。如上所述,每個SPI外設每接收一個字節(jié)返回一個字節(jié)。因此,MAXQ3180在接收到第一個命令字節(jié)后返回0xC1,在第二個命令字節(jié)后返回0xC2。該協(xié)議如圖 2 所示。

poYBAGPEqLSAYqrGAAAwptij4N4910.gif?imgver=1

圖2.主機向MAXQ3180讀寫數(shù)據(jù)。

如果主服務器正在讀取一個或多個字節(jié),則必須發(fā)送虛擬字節(jié)。請記住,除非從站發(fā)送一些東西,否則主站無法從從站接收任何東西:發(fā)送一個字節(jié)來獲取一個字節(jié)。但是在收到命令后,MAXQ3180可能必須計算結果,因此當主機發(fā)送虛擬字節(jié)時可能還沒有準備好結果。因此,MAXQ3180在發(fā)送數(shù)據(jù)之前,總是發(fā)送零個或多個NAK字符(0x4E或ASCII'N'),后跟ACK字符(0x41或ASCII'A')。

如果主站正在寫入一個或多個字節(jié),它會在發(fā)送命令后立即發(fā)送要寫入的數(shù)據(jù)。MAXQ3180為每個數(shù)據(jù)字節(jié)返回ACK (0x41)。然后,它返回 NAK (0x4E),直到寫入周期完成,之后返回最終的 ACK。

注意,在最終ACK之后,MAXQ3180立即準備好開始下一筆交易;它不需要等待任何其他事件。甚至不需要切換 SSEL 即可開始下一個事務。MAXQ3180知道第一筆交易已經(jīng)結束,并準備好進行下一筆交易。

無論出于何種原因,如果需要復位主機與MAXQ3180之間的通信(例如,如果通信變得不同步),主機只需等待200ms即可從第一個命令字節(jié)重新啟動通信。200ms延遲通知MAXQ3180主機放棄前一個事務。

命令字節(jié)

命令字節(jié)告訴MAXQ3180:

請求的事務是讀取還是寫入

交易的長度

RAM 中要修改的地址(或要讀取的虛擬 ROM 地址)

pYYBAGPEqQ-AcxYOAAApGbsOs8s736.png

圖3.命令字節(jié)的結構。

第一個命令字節(jié)(圖3)告訴MAXQ3180所請求的事務是讀還是寫,以及事務的長度。命令字節(jié)使用以下計劃:

長度代碼 數(shù)據(jù)長度
0b00 1 字節(jié)
0b01 2 字節(jié)
0b10 4 字節(jié)
0b11 8 字節(jié)

命令字節(jié) 1 的其余部分和所有命令字節(jié) 2 提供要訪問的 RAM 中字節(jié)的地址(或虛擬 ROM 函數(shù)的身份)。

主機軟件設計

雖然MAXQ3180包含硬件SPI控制器,但單個消息字節(jié)仍由ROM固件中的軟件例程處理。因此,連續(xù)字節(jié)之間需要延遲。在當前版本的MAXQ3180中,該延遲必須不小于100μs才能可靠工作。參見圖 4 和圖 5。

pYYBAGPEqTeAQTw5AABtQz9C5AI196.png

圖4.MAXQ3180讀數(shù)流程圖

poYBAGPEqS-ADGFIAABzQeE9TdI866.png

圖5.編寫MAXQ3180的流程圖

代碼清單

提供代碼,用于將內置SPI主機的MAXQ2000微控制器連接至MAXQ3180。其他微控制器的用戶將需要提供自己的SPI基元,并可能修改高級子程序。

在下面的列表中,子例程導致程序線程在給定的微秒數(shù)內停止執(zhí)行。常量被定義為提供比字符超時更長的內容。dly_usSPI_TIMEOUT

在高級子例程中,ENUM 用于按名稱選擇寄存器。它索引數(shù)組,其中包括每個MAXQ3180寄存器的寄存器長度。請參見圖 6、7 和 8。register_lookup_table

unsigned char Send_SPI(unsigned char x)
{
  unsigned char y = 0;
  int z;
  int error = 0;
  SPICN = 3; /* MSTSM, SPIEN */
  z = 0; while ((SPICN_bit.STBY) && (++z < SPI_TIMEOUT));
  if (z == SPI_TIMEOUT) error = 1;
  SPICN_bit.SPIC = 0; /* Clear transfer complete flag */
  SPIB = x;
  z = 0; while ((!SPICN_bit.SPIC) && (++z < SPI_TIMEOUT));
  if (z == SPI_TIMEOUT) error = 1;
  y = SPIB;
  SPICN_bit.SPIC = 0;
  dly_us(100);
  if (error) return 0;
  return y;
}

圖6.基元的代碼。Send_SPI

long Read_AFE(enum METER_REGISTER_RECORD reg, uint16 reg_addr)
{
  extern unsigned char record[8];
  unsigned long x = 0;
  unsigned char i, regadd, command_code = 0;
  for(i=0; i<8; i++) record[i] = 0;
  switch(register_lookup_table[reg].register_length)
  {
  case 2: command_code |= 0x10; break;
  case 4: command_code |= 0x20; break;
  case 8: command_code |= 0x30; break;
  }
  command_code |= reg_addr >> 8;
  regadd = reg_addr & 0xff;

  /* Disable SPI to reset it */
  SPICN_bit.SPIEN = 0;
  for(x=0; x<300; x++);
  SPICN_bit.SPIEN = 1;

  SPI_SELECT_0;
  i = 0;
  while((Send_SPI(command_code)!= 0xC1)&&(++i < SPI_COMMAND_RETRIES))
    spi_comm_timeout();

  x = 0xffffffff;
  if (i == SPI_COMMAND_RETRIES) goto spierror;
  Send_SPI(regadd);
  i = 0; while((Send_SPI(0) != 'A') && (++i < SPI_RETRIES));
  if (i == SPI_RETRIES) goto spierror;
  x = 0;
  for(i=0; i
			

圖7.() 子例程的代碼。ReadAFESPI_Read

long Read_AFE(enum METER_REGISTER_RECORD reg, uint16 reg_addr)
{
  extern unsigned char record[8];
  unsigned long x = 0;
  unsigned char i, regadd, command_code = 0;
  for(i=0; i<8; i++) record[i] = 0;
  switch(register_lookup_table[reg].register_length)
  {
  case 2: command_code |= 0x10; break;
  case 4: command_code |= 0x20; break;
  case 8: command_code |= 0x30; break;
  }
  command_code |= reg_addr >> 8;
  regadd = reg_addr & 0xff;

  /* Disable SPI to reset it */
  SPICN_bit.SPIEN = 0;
  for(x=0; x<300; x++);
  SPICN_bit.SPIEN = 1;

  SPI_SELECT_0;
  i = 0;
  while((Send_SPI(command_code)!= 0xC1)&&(++i < SPI_COMMAND_RETRIES))
    spi_comm_timeout();

  x = 0xffffffff;
  if (i == SPI_COMMAND_RETRIES) goto spierror;
  Send_SPI(regadd);
  i = 0; while((Send_SPI(0) != 'A') && (++i < SPI_RETRIES));
  if (i == SPI_RETRIES) goto spierror;
  x = 0;
  for(i=0; i
			

圖8.() 子例程的代碼。Write_AFESPI_Write

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7552

    瀏覽量

    151426
  • 芯片
    +關注

    關注

    455

    文章

    50816

    瀏覽量

    423672
  • 接口
    +關注

    關注

    33

    文章

    8598

    瀏覽量

    151163
收藏 人收藏

    評論

    相關推薦

    MAX3180/MAXQ3180中文資料pdf

    MAXQ3180是專用的電氣參數(shù)測量前端,它采集并計算多相負載的多相電壓、電流、功率、能量等多種計量參數(shù)和功率品質參數(shù)。外部主機通過片內串行外設接口(SPI™)總線讀出計算
    發(fā)表于 06-30 11:41 ?124次下載

    MAXQ3180 Low-Power, Multifunct

    The MAXQ3180 is a dedicated electricity measurement front-end that collects and calculates
    發(fā)表于 02-06 12:44 ?26次下載

    如何使用MAXQ3180的低功耗測量模式與停止模式

    如何使用MAXQ3180的低功耗測量模式與停止模式:1. MAXQ3180 的多種工作模式......................................... 22. MAXQ3180
    發(fā)表于 10-31 07:58 ?16次下載

    怎樣使用MAXQ3180微控制器串行外設接口(SPI)

    摘要:MAXQ3180微控制器是電表多相模擬前端。它具備現(xiàn)代多功能電表的所有功能。MAXQ3180通過串行外設互聯(lián)(SPI™)總
    發(fā)表于 04-23 16:01 ?778次閱讀
    怎樣使用<b class='flag-5'>MAXQ3180</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>(SPI)

    Using the MAXQ3180 Analog Fron

    Using the MAXQ3180 Analog Front-End in a Single-Phase Configuration Abstract: This application note
    發(fā)表于 08-11 11:55 ?830次閱讀
    Using the <b class='flag-5'>MAXQ3180</b> Analog Fron

    在單相表架構中使用模擬前端MAXQ3180

    在單相表架構中使用模擬前端MAXQ3180 Abstract: This application note describes how to adapt the MAXQ3180
    發(fā)表于 09-05 23:20 ?938次閱讀
    在單相表架構中使用模擬前端<b class='flag-5'>MAXQ3180</b>

    MAXQ3180 低功耗、多功能、多相AFE

    MAXQ3180 低功耗、多功能、多相AFE 概述 MAXQ3180是專用的電氣參數(shù)測量前端,它采集并計算多相負載的多相電壓、電流、功率、能量等多種
    發(fā)表于 12-12 20:47 ?1032次閱讀
    <b class='flag-5'>MAXQ3180</b> 低功耗、多功能、多相AFE

    MAXQ3180入門:寄存配置

    MAXQ3180入門:寄存配置 雖然多相、多功能電能計量AFE芯片MAXQ3180具有很多配置寄存,但僅需配置幾個寄存即可實現(xiàn)基本
    發(fā)表于 03-28 09:20 ?1189次閱讀

    基于MAXQ3180/MAXQ3183的電能表參考設計

      參考設計為電能表使用MAXQ3180/MAXQ3183   摘要:MAXQ
    發(fā)表于 10-28 08:57 ?1722次閱讀
    基于<b class='flag-5'>MAXQ3180</b>/<b class='flag-5'>MAXQ</b>3183的電能表參考設計

    MAXQ3180 MAXQ3183 AFE的電表參考設計

    MAXQ3180MAXQ3183是兩款三相多功能計量模擬前端(AFE),它可以提供如功率因素、功率矢量和以及諧波分量等許多先進的功率監(jiān)視特性。對于電表設計而言,對計量精度和電快速瞬變(EFT)有嚴格要求,Maxim提供的參考設計通過了EFT和精度等方面的嚴格測試。這些設
    發(fā)表于 03-09 11:51 ?0次下載
    <b class='flag-5'>MAXQ3180</b> <b class='flag-5'>MAXQ</b>3183 AFE的電表參考設計

    MAXQ615 16位MAXQ微控制器的硬件乘法器

    MAXQ615是一個低功耗,16位MAXQ?微控制器低功耗應用而設計的。該設備結合了強大的16位RISC微控制器,包括多個高速串行通信
    發(fā)表于 04-18 11:32 ?1151次閱讀

    16位微控制器MAXQ613的特點及應用

    MAXQ613是一款低功耗、16位MAXQ微控制器,設計用于通用遙控、消費類電子和白色家電等低功耗產(chǎn)品。器件結合了強大的16位RISC微控制器
    的頭像 發(fā)表于 10-02 14:03 ?3468次閱讀
    16位<b class='flag-5'>微控制器</b><b class='flag-5'>MAXQ</b>613的特點及應用

    在單相配置中使用MAXQ3180模擬前端

    雖然MAXQ3180設計用于測量三相電源,但它也可以僅使用A相輸入,使B和C通道斷開,從而測量單相能量。本應用筆記的其余部分描述了實現(xiàn)這種單相操作的簡單過程。
    的頭像 發(fā)表于 01-10 14:03 ?545次閱讀
    在單相配置中使用<b class='flag-5'>MAXQ3180</b>模擬前端

    怎樣使用MAXQ3180微控制器串行外設接口

    MAXQ3180微控制器是電表多相模擬前端。它具備現(xiàn)代多功能電表的所有功能。MAXQ3180通過串行外設互聯(lián)(SPI?)總線將其讀數(shù)傳送給主
    的頭像 發(fā)表于 02-14 18:21 ?922次閱讀
    怎樣使用<b class='flag-5'>MAXQ3180</b><b class='flag-5'>微控制器</b>的<b class='flag-5'>串行</b><b class='flag-5'>外設</b><b class='flag-5'>接口</b>

    使用MAXQ610微控制器串行端口

    MAXQ610微控制器提供兩個標準的USART串行端口。異步模式1是MAXQ610串行端口支持的模式之一,可用于與PC COM端口和許多其他
    的頭像 發(fā)表于 02-20 13:42 ?983次閱讀
    主站蜘蛛池模板: 久久亚洲视频| 国产丝袜va丝袜老师| 国产精品黄页网站在线播放免费| 天天做天天爱天天爽综合区| 2018国产一级天天弄| 午夜视频观看| 玖玖福利| mitunav在线| 一级做a爱 一区| 噜噜噜色网| 二级黄绝大片中国免费视频0| 亚洲午夜在线视频| 欧美性极品hd高清视频| 国产中文字幕一区| 天堂视频在线免费观看| 国产激情视频一区二区三区| 国产精品露脸脏话对白| 欧美区在线| 色5月婷婷| 精品女视频在线观看免费| 俺也去第四色| 欧美成人鲁丝片在线观看| 天堂资源在线种子资源| 91成人在线播放| 中文字幕精品一区二区2021年 | 日韩一二三级| 午夜网站在线播放| 老师解胸罩喂我吃奶| 色综合九九| 国产一区二区精品| 97天天摸天天碰天天爽| 色在线网站免费观看| 天天天天添天天拍天天谢| 看黄网站免费| 菲菲国产在线观看| 亚洲一区在线视频观看| 免费国产成人α片| 国产精品免费看久久久| 色综合97天天综合网| 天天天天天操| 亚洲综合情|