• AVR Freaks

Hot!Inter - Integrated Circuit Specifically the 16bit CH

Page: 12 > Showing page 1 of 2
Author
Gort2015
Klaatu Barada Nikto
  • Total Posts : 3956
  • Reward points : 0
  • Joined: 2015/04/30 10:49:57
  • Location: 0
  • Status: offline
2020/02/17 18:42:11 (permalink)
5 (1)

Inter - Integrated Circuit Specifically the 16bit CH

Long Article
 
Testing the i2c in slave mode due to CK and CH errata, although severe with the CK.
This is using the dual core CH chip, this will confirm if i2c comms works in both master and slave and so far it does.
 
Need to write some more protocols then I can run the long tests.
 
Reminder: Need to get some shielded cable and some better usb cables.
 
 
Wires are spread out over a breadboard, connections include scope leads, logic analyser, i2c x 2, 1 x uart, PK4.
As long as devices are not too close they run fine otherwise PK4 can fail and so will uart, that is what the shielded cables are for.
 
Standard Pull-ups 4.7K 25%
 
Configuration:
Master cpu:   90MIPS, I2C Master (100KHz, 400KHz, 1000KHz)
Slave cpu:    100MIPS, I2C Slave (100KHz, 400KHz, 1000KHz)
 
Tests appear to work so far.
 
The slave core is configured as an independant i2c device that has 1000 bytes of memory, 2 bytes for a timer and 2 bytes for internal config.
 
To test this ram chip from the master cpu -> master i2c:
int i2c_puts(int ID, int Address, const void *Buffer, int Len);
 
Chip Name
Ram
Brand:
GORTRAM
Memory Size
1000 bytes
Chip ID
[011 0000]   $30 and $31 (access slave uart)
RAM Address Range
0 - 3E7
Timer in 100th of a second
3E8 - 3E9
Config area and bits
3EA - 3EB
Copyright Area
3EC - 3FF   Contains the message "Gort1951_CH_BUG_TEST" (no null)
Pinouts
SDO, SCL, INT
Special Features
LED
 
Modes:
0 CFG_ENLED  - Memory chip has an led.
1 CFG_ROBIN - Enable Round Robin
2 CFG_ENCD  - Enable countdown
3 CFG_DEBUG  - Debug tx/rx data
Status:
3 INT_OUT - end of memory reached
4 INT_CD  - Countdown interrupt
 
If set to round robin memory restarts to location zero when reaching 1000.
If not set to round robin the memory device returns a nack when reaching 1000, for good measure an interrupt is fired and the flag INT_OUT is set.
 
3E8 - 3E9 Is the countdown timer register in 100/1 second, the range is 0 to 655 seconds.
 
The chip has 2 id's
The 2nd ID $31 allows access to this "ram" chip's uart port.
int i2c_echo(const char *String);
 
When the "ram" device times out or stop is asserted by the master the chip goes back to sleep.
 
 
Faster i2c varients support 3500KHz and 5000KHz, don't know if any pics do.
 
To be continued...
 
 
 
post edited by Gort2015 - 2020/02/17 18:45:24

MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
https://www.youtube.com/watch?v=Iu1qa8N2ID0
+ ST:Continues, "What Ships are Made for", Q's back.
#1

33 Replies Related Threads

    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/17 20:17:38 (permalink)
    0
    Some early tests that I ran:
    Sending the message "Klattu Barada Nikto".
     
    100KHz and 400KHz passed.
     
    1000KHz BRG has failed though.
    The game is afoot...

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #2
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/17 22:46:47 (permalink)
    0
    Status flags INT_OUT and INT_CD must be cleared to prevent continuous interrupts just like a real chip would.
     
    1000KHz - will try with 50pf or lower caps on i2c line or maybe lower resistance pullups to 3.3K.
     
     
    Possible ideas.
    i2c to spi
    When the chip powers down, ram is written to flash.
    When the chip power up, flash is written to ram.
     
    i2c with checksums
    i2c with secure connection, encrypt, key needed.
    (There is a special feature on the CH chip that can kill it dead, another story)
    (This chip will self destruct in 30 seconds)
     
    Got side tracked, looking for bugs.
     
    The max. amount of devices on a single i2c bus is 511 but I will stick to 10.
     
    Other future tests include dual master i2c for bus arbitration.
    Config both cores as master and access slave devices randomly.
     
     
    I2C revisited.
     
     
    When digital output pins are configured on the CH cpu, analogue, latch and owner are configured.
    Both cpus can read.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #3
    JPortici
    Super Member
    • Total Posts : 1094
    • Reward points : 0
    • Joined: 2012/11/17 06:27:45
    • Location: Grappaland
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/18 00:43:15 (permalink)
    0
    By reading at the errata it looks like a problem of crosstalk between high speed peripherals and I2C
    Quoting from the errata:
    Examples ofsystem noise include, but are not limited to,PWM outputs or other pins toggled at highspeed adjacent to the I2C pins

     
    So for example a digital SMPS or motor controller with SMBUS
    #4
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/18 05:39:26 (permalink)
    0
    Now works at 1000KHz.
    I removed the scope leads, re-seated the i2c pull-ups and inserted thin wire 47pf caps into the same pin holes.
     
    Now I need to take out the caps to see if the caps or the scope leads removal fixed it.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #5
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/18 21:33:26 (permalink)
    0
    I have found a bug that can be repeated and tested.
     
    bset    I2C1CONL,#STREN     ;en clk stretch
     
    Clock stretching is the default action of the slave i2c device, setting this bit allows further clock stretching.
    bclr I2C1CONL,#SCLREL
     
    Setting STRLEN causes repeated chars to appear on the i2c bus.
    GORT   G O O  R T
     
    Slave device is interrupt driven so STRLEN does not matter unless you want to stay in the interrupt and do it manually but there is no point.
     
    At 100KHz, the cpu executes 1000 instuctions per i2c clock.
     
    Now sending long strings at 1000KHz over i2c bus with 10bit ids.
     
    Any nacks and an led turns on with a message sent to uart.
    Is has not happened yet, I can test it by sending a nack if '*' is sent.
     
    Maybe more than 1000KHz is possible?
     
    Testing 1100KHz and higher.
     
     
    Another bug would be with the cpu idle and i2c module operating.
    Have not properly tested sleep mode with i2c slave - that will be a major test.
     
    These I2C bugs do not apply to i2c as a master device.
     
    This is on a bread board with flying leads but the chip is resilient.
     
    The bugs that I had Yesterday with the scope leads were down to that register bit.
     
     
    Bus collision with 1 master is not going to happen.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #6
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/18 21:50:45 (permalink)
    0
    Success with i2c at 1100KHz.
    Tomorrow I will test to the limit.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #7
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/19 08:25:21 (permalink)
    5 (1)
    1500KHz i2c support.  Success.
    I am confident it will go a lot higher.
     
    Only the length of the connecting i2c cable will have an affect, 1 Meter of shielded would be a good test.
     
    Another test involves fibre optic cable but I do not want to get too involved in this.
    Just happy the CH chip works in and out of i2c specs.
     
    No CK chips to test.
    Still some further tests to be done but it's all positive so far apart from the minor manual clock re-stretch bug.
     
    Article coming on how to send passwords over the i2c bus.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #8
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/19 10:54:25 (permalink)
    0
    Failed at 2000KHz.
    I think with some adjustment it would work but this is on a breadboard.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #9
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 09:46:56 (permalink)
    5 (1)
    There is a bug in the I2C slave mode as in the errata, however MC does not tell you the root cause and what events take place.
     
    It took me a week to work out (Determined and was not giving up, beard etc...)
     
    Writing to the slave, no problems there.
     
    Reading from the slave
    State machine, not necessary, i2c h/w takes care of that.
     
    I2C slave comms. is split into 4 events.
    1. write chip id
    2. read chip id
    3. write data
    4. read data
     
    A repeated start is asserted, after that we can read from same chip or address another chip.
    That allows faster reading and writing to a group of i2c eeproms.
     
    On a typical 7bit read from a chip:
    MASTER                                                                   SLAVE H/W EVENTS
    1. assert start                                                          Start - don't care
    2. chip id write                                                         Write Address
    3. 8bit internal address                                             Write Data
    4. assert rstart                                                         Start - don't care
    5. chip id read                                                          Read Address
    6. reading enable - reverse direction
    7. read databyte, NAK when done, back to 6               Read Data, NAK? prepare and wait for stop or timeout
    8. assert stop
     
    That is what should happen to the slave, it does not but I will get into that on another post.
     
     
     
     
     
     

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #10
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 10:19:28 (permalink)
    0
    First I create a string to read and write to the slave, this will be sent at different frequencies in 10bit mode.
     
    const char *Star_Trek =
    "Space: the final Frontier."
    "These are the voyages of the Starship Enterprise."
    "It's continuing mission: to explore strange new Worlds,"
    "to seek out new Life and new Civilizations,"
    "to boldly go where no Man has gone before.";
     
    The Master core (CH) is not connected to a uart, by using a different address on this i2c slave, the master can make use of the slave's uart.
     
    My experimental chip now contains 4 addresses: (As if it was 4 chips)
    1. rd/wr to 1000 bytes ram   (volatile)
    2. rd/wr to 1000 bytes of flash (non-volatile)
    3. read a 24bit address
    4. write to uart
     
    The led only turns on if a nak is received.
     
    I may switch to Star Fleet logic:
    one flash for ack.
    two flashes for nak.
     
     
    post edited by Gort2015 - 2020/02/27 10:26:38

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #11
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 11:08:47 (permalink)
    0
    Chip ID:
    10 1100 1100      2CC ram 0 - 999
    10 1100 1101      2CD rom 0 - 999
    10 1100 1110      2CE read 24bit address, return 24bit data
    10 1100 1111      2CF uart
     

    id - 10 1100 1100  (write data to ram)
    wr addr_H
    wr addr_L
    wr data
    [R]
    id - 10 1100 1101 (write data to rom)
    wr data
    [R]
    id - 10 1100 1111 (write data to uart)
    wr data


     


    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #12
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 11:09:17 (permalink)
    0
    It got strke-through by the forum software.
     

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #13
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 18:47:48 (permalink)
    0
    Test setup I am building.
     
    There will be 8 i2c devices on the bus.
     
    Test Frequency 10KHz (Depending on min. freq.) to 1500KHz.
    RTC and EEPROM 50KHz to 400KHz.
     
    Binary Chip ID   Hex   Device
    10 1100 1000      2C8    RAM [0 - 999]
    10 1100 1001      2C9    ROM [0 - 999]
    10 1100 1010      2CA    Read any 24bit address from the slave cpu, return 24bit data
    10 1100 1011      2CB    UART
    10 1100 1100      2CC    Timer (100th second)
    10 1100 1101      2CD    Led x 2 (on/off/pwm) - to be placed next to i2c pins.
    10 1100 1110      2CE    Reserved
    10 1100 1111      2CF    Reserved
          110 1000        68    RTC (DS3231)
          101 0000        50    EEPROM
     

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #14
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/02/27 19:48:26 (permalink)
    5 (1)
    Need some structure for the slave devices.
    #define MEMSIZE         1000        // memory size
    #define UBSIZE           100        // uart buffer size

    typedef struct{
        unsigned char   RAM[MEMSIZE];   // public:
        unsigned int    Config;         // public:
        unsigned int    Index;          // private:
    }Ram_Device_t;

    typedef struct{
        unsigned char   Latch[MEMSIZE]; // private:
        unsigned int    Config;         // public:
        unsigned int    Index;          // private:
    }Rom_Device_t;

    typedef struct{     //buffer and unbuffered
        unsigned char   Buffer[UBSIZE]; // private:
        unsigned int    Config;         // public:
    }uart_Device_t;

    typedef struct{
        unsigned int    Time;           // public (read only): 100th second
        unsigned char   Config;         // public:
        unsigned char   PadByte;        // private:
    }Timer_Device_t;

    typedef struct{     //big endian
        unsigned char   Upper;          // public: 24bit address, upper byte
        unsigned char   Mid;            // public: 24bit address, mid byte
        unsigned char   Low;            // public: 24bit address, low byte
        unsigned char   idx;            // private: byte idx
    }Timer_RD24_t;

    typedef struct{
        unsigned int    Period_A;       // public:
        unsigned int    DutyCycle_A;    // public:
        unsigned int    Period_B;       // public:
        unsigned int    DutyCycle_B;    // public:
        unsigned char   Config;         // public:
        unsigned char   PadByte;        // private:
    }Led_t;

    Saved starting mplab x up.
     
    Anyone want to discuss?
    post edited by Gort2015 - 2020/02/27 19:56:00

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #15
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/03/01 13:18:52 (permalink)
    0
    The 10bit device ids are now:
        ; 10 1100 1000      2C8     RAM
        ; 10 1100 1001      2C9     ROM
        ; 10 1100 1010      2CA     RD24   Read the slave cpu mem. 24bit addr. and return it's 24bit data
        ; 10 1100 1011      2CB     LED     Control two leds
        ; 10 1100 1100      2CC     UART
        ; 11 1100 1100      3CC     UART2

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #16
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/03/01 13:30:23 (permalink)
    0
    If we were to use the rom device with the slave cpu, it's contents would be lost on power-down.
    It is fine for creating devices and testing and the 2nd core has unlimited writes.
     
     

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #17
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/03/01 13:50:01 (permalink)
    4 (1)
    The uart has these config settings:
    #define UTCFG_DATALEN     0x0001      // 0 = 7bit, 1 = 8bit
    #define UTCFG_STOP        0x0002      // 0 = one, 1 = two
    #define UTCFG_FREQ0       0x0004      // 0 - 15
    #define UTCFG_FREQ1       0x0008      // "
    #define UTCFG_FREQ2       0x0010      // "
    #define UTCFG_FREQ3       0x0020      // "
    #define UTCFG_DISABLE     0x0040      // disable device
    #define UTCFG_DEBUG       0x0080      // private: not settable, debug
    #define UTCFG_XON         0x0100      // xon off/off

    /*
        150         0000
        300         0001
        600         0010
      1,200         0011
      2,400         0100
      4,800         0101
      9,600         0110
     14,400         0111
     19,200         1000
     28,800         1001
     38,400         1010
     56,000         1011
     57,600         1100
    115,200         1101
    128,000         1110
    256,000         1111
    */
     
    I now have an enhanced i2c library, there is only one feature to add:
     
    An I2C repeater (Or router)
     

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #18
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/03/01 18:25:38 (permalink)
    0
    I will be publishing a new i2c scanner, this version supports 7bit and 10bit.
     
    Just to get some things out of the way about device ids.
     
    An i2c device with a 7bit id  $68 1101000 (rtc)
    That address can be included in the 10bit id range, allowing:
    $68
    $068, $168, $268 and $368 (user devices)
     
    All unique and mixed.
    With a repeater, the other 4 could be sent on to idependant channels.
     
    Fast speeds are achievable but no where near the high speeds of 3000KHz and 5000KHz.
    For high speed both pull-ups and pull-downs are used.
     
    7bit i2c id range is exhausted, 10bit has plenty of space though.
     
    Been wanting to write this article, it allows me to think as I am typing.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #19
    Gort2015
    Klaatu Barada Nikto
    • Total Posts : 3956
    • Reward points : 0
    • Joined: 2015/04/30 10:49:57
    • Location: 0
    • Status: offline
    Re: Inter - Integrated Circuit Specifically the 16bit CH 2020/03/01 20:56:40 (permalink)
    0
    Here is the old version that I have published many times.
    //----------------------------------------------------
    #include   <xc.h>
    #include   <stdio.h>
    #include   "I2CLib2.h"
    section     i2c_code,code;
    //----------------------------------------------------
    int i2c_scan(unsigned char *List){
        int cnt=0;
        
        for(int f=0;f<255;f+=2){
            i2c_start();
            while(I2CCON&0x1f);
            I2C1TRN=f;
            while(I2CSTATbits.TRSTAT);
            if(!I2CSTATbits.ACKSTAT){
                cnt++;
                if(List)*List++=f;
                else printf("device 0x%02X found\r",f);
            }
            i2c_stop();
        }
        return cnt;
    }
    //----------------------------------------------------

    I do have any 7 bit devices connected yet but I do have 7 x 10 bit devices.
     
    Just need to test the new code.

    MPLab X playing up, bug in your code? Nevermind, Star Trek:Discovery will be with us soon.
    https://www.youtube.com/watch?v=Iu1qa8N2ID0
    + ST:Continues, "What Ships are Made for", Q's back.
    #20
    Page: 12 > Showing page 1 of 2
    Jump to:
    © 2020 APG vNext Commercial Version 4.5