-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can CH446Q be used? #1
Comments
The CH446Q is an 8x16 matrix analog switch chip. The CH446Q contains 128 analog switches which distributed at each intersection of the 8x16 signal path matrix, each analog switch can be turned on or off independently, enabling arbitrary routing of 8x16 signal paths. |
In parallel address input mode, CH446Q is basically compatible with MT8816, but the package and pins are different. The difference is 8x16 |
Yeah, I've looked into that early on but it may be worth getting a few of those to see how they perform. The serial addressing would be really nice to make everything a bit simpler, and the smaller package would allow me to fit more of them on each board. I vaguely remember the operating voltage being lower but I'll pull up both datasheets to compare. @modi12jin Any chance you've found one in english? |
@Architeuthis-Flux I did not find the English version of the manual, but I made some efforts to translate the Chinese manual into the English version of the manual. |
Analog switch chip
|
Thanks for the translation, it's much nicer to read than the raw Google Translate version. I really appreciate it. I think I'm going to try out a version with 12 CH446X's on the top board, so every 5 breadboard rows are the Y pins and then I'll have 24 backend connections to route 2 lines to every other chip and the 2 extra lines go to the special function crosspoint chip on the bottom board (or power and ground, and then I'd need to come up with a new scheme for routing special functions, maybe I'll add another chip that handles the power rails and special functions.) I guess logically it would be similar to using 8 CH446Q's, I need to map it all out on paper and see if I can come up with a clever solution for all that. I'm assuming you're in China, and I'm wondering if you might have a way of finding these chips for less than the $2.30 USD each that I just payed on Aliexpress. Feel free to join the project on Hackaday.io so we can use the project chat too. |
@Architeuthis-Flux You guessed it, I was in China, and it was about $1.3 if I bought it on Chinese Taobao. If you buy in large quantities, it is recommended to find official sales or large distributors, the price will be lower because of the quantity you buy. |
@Architeuthis-Flux What kind of MCU is used to control CH446X? It only supports serial communication. I can't see how to reuse and replace SPI. You may need 48 (12×4) GPIOs. I plan to use ESP32-C3 as a controlled terminal. For the control end, I may need CH446Q, I need 8 CH446Q. The MCU on the control side needs 32 (4×8) GPIOs. |
@modi12jin It's hard to be 100% sure from these short datasheets, but if I understand it correctly once you set an address for each chip, they can be bussed together and all share the same 4 lines ignoring any command that doesn't start with that chip's 7 (or 8) bit address. So if you set the address before soldering them onto the board, you could control them all with only 4 pins. As for how non-volatile that stored address is, I don't know. To be safe it might be worth coming up with a way to individually set them at startup, but that adds 12 (or 24) more pins unless come clever multiplexing scheme is used. |
@Architeuthis-Flux Test success! I haven't tested whether GPIO can be reused |
WeChat_20211210151938.mp4@Architeuthis-Flux I tried pin multiplexing. Except STB cannot be multiplexed, the other three (RST, DAT, SK) can be multiplexed. |
Nice, I really like the idea of defining every internal connection as a hex value. That will make saving and reloading board states soooo much easier, and points to a solution for disconnecting rows. It's also interesting that it doesn't have a messed up truth table (as far as I can tell) like the MT8816, which swaps X12 and X13 with X6 and X7 (or something like that, it's been a while) so you have to change that if you want to just send bytes to a port as hex. I think I may use a couple (or 3) of these CH446s for the control board (to save space) and leave the MT8816s on the top side, after some discussion with non-techy people, they all liked the weight that those huge PLCC chips add to it. And having a huge ceramic package might help dissipate more heat so we can run them a bit further out of spec than we already are. I'll get some work done on it soon but Christmas has me flying between my hometown and Mexico way too much to be consistent lately. |
https://github.com/dotcypress/fpgb @Architeuthis-Flux I don't know if you have seen this warehouse, and his idea may have a place worth learning. |
22a1b9a43e46816e1826f10d8177e7a3.mp4@Architeuthis-Flux (ST7789_SPI_240*240) There is no distortion in the case of 40MHZ, and the screen is directly black at 80MHZ. |
b5750833ce39440f6a622a033ddf93da.mp48080 interface parallel port 8-bit 20MHZ |
@Architeuthis-Flux found that CH446Q is not very suitable for switch connection of power and ground, only for signal switch connection (because the current is too small). I have tested that the current cannot drive the ST7789 screen, but directly connecting the 3V3 on the ESP32 minimum system board can make it work normally |
@modi12jin @Architeuthis-Flux The english datasheet of the CH446Q is available on the website here: http://www.wch-ic.com/downloads/CH446DS1_PDF.html The pins seem 12v tolerant and it should be able to switch roughly 15mA of current if you drive them at 12v. Otherwise it's way less. That's at least how I interpret table 6.3. However, then you do need 5v logic to switch them, so an ESP32 that only does 3.3v won't cut it... easy enough to solve tho. |
@atlaste Yeah, the specs do get way better as supply voltage goes up and temperature goes down. And I've been testing pushing 100mA through them and haven't blown one up yet somehow. There's also a very elusive app note out there somewhere that I can't find right now. @modi12jin In my experience, when weird things are happening with getting a huge voltage sag when pulling any current, it's because I've messed up the addressing somehow and so a bunch of connections have been made that shouldn't be. So you end up with a voltage divider situation. |
@Architeuthis-Flux Yes I noticed that while looking at the schematics. When using 9v/-8.5v the VDD-GND=9v, so I'm not really surprised that you can drive them with 3.3v. VIH=2v for VDD-GND=5v and 3.3v for VDD-GND=12v; assuming linear scaling that means they should trigger at roughly 2.75v. TTL is at 2.7v so that seems to be just fine. They should go up to 100 mA, as long as you push <= 15 mA per pin according to the datasheet. For most applications you probably don't even need the -8.5v, since you're only 0-9v through in reality? I'd like to switch them at 12v for my pet project. But 3.3v for VIh is not going to cut it I suppose, so I guess that's not going to be working with a RP2040. |
The text was updated successfully, but these errors were encountered: