Thông báo

Collapse
No announcement yet.

Đọc data từ chip STPM01

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Đọc data từ chip STPM01

    Tình hình là em đang làm thực tập tốt nghiệp, thầy giao calibration cái mạch Công tơ số đã có. Nhiệm vụ của em giờ là lấy ra data từ bản ghi dữ liệu bên trong con STPM01 qua giao tiếp SPI của con stpm01, truyền lên PC. mạch dùng vdk AT89C52.
    Con stpm01 là con đo đạc và tính toán công suất tiêu thụ điện năng. các giá trị tức thời của dòng điện và điện áp phục vụ tính toán công suất lưu trong 1 trong các bản ghi đó. Mỗi bản ghi 32 bit. Em chỉ cần đọc 1 bản ghi thui. Đọc datasheet có thủ tục đọc thế này
    [IMG][/IMG]

    t1 → t2: Pha Latching (chốt), thời gian > 2/fCLK (con stpm01 dùng thạch anh 4MHz thì là 500ns)
    t2 → t3: Data được chốt, SPI rỗi, thời gian > 30ns
    t3 → t4: Hiện SPI cho hoạt động đọc, thời gian > 30ns
    t4 → t5: Reset bộ đếm đồng hồ nối tiếp, thời gian > 30ns
    t5 → t6: SPI được reset và hiện cho hoạt động đọc, thời gian > 30ns
    t7: Data nội được truyền lên SDATD
    t8: Data SDATD được ổn định và có thể được đọc

    và đây là đoạn code em viết theo cái thủ tục trên:

    void RecordReading (unsigned char NoR){ // NoR = Number of Records to Read
    unsigned char i,j,k;
    unsigned long DataTemp;
    for (i = 0; i < NoR; i++){
    DataRecord[i] = 0; // Reset all DataRecord
    }
    SYN = 0;
    SYN = 1; // Latching phase done
    _nop_(); // SPI idle
    SCS = 0; // Enable SPI for read operation
    SYN = 0;
    SYN = 1; // Reset serial clock counter
    SCL = 0;
    for (i = 0; i < NoR; i++){
    for (j = 0; j < 4; j++){
    DataTemp = 0;
    for (k = 0; k < 8; k++){
    SCL = 1;
    if (SDA) DataTemp |= 0x01;
    else;
    DataTemp <<= 1;
    SCL = 0;
    }
    DataTemp <<= j*3;
    }
    DataRecord[i] |= DataTemp;
    }
    ReloadHighState();
    }

    void ReloadHighState(void){
    SCS = 1;
    SYN = 1;
    SCL = 1;
    SDA = 1;
    }
    Các đàn anh có kinh nghiệm trong lĩnh vực đọc data này cho em ý kiến với, xem có sai chỗ nào k? Làm thế nào lấy được data từ các bản ghi đó? Em thử thì lần nào đọc cũng chỉ ra 1 loại ký tự ở bất kỳ bản ghi nào
    Attached Files
    Last edited by quytim; 25-01-2010, 23:29.

Về tác giả

Collapse

quytim Tìm hiểu thêm về quytim

Bài viết mới nhất

Collapse

Đang tải...
X