We go to Canada fairly often, and always use bank cards to get cash in Canadian (minimal), and mostly pay with with debit and credit cards. I've never encountered a location that doesn't take unchipped cards, although sometimes you'll have to go inside to do it. (Some gas stations will take chipped cards at the pump, but unchipped cards have to be run through a machine inside.)
There are credit cards that don't have foreign transaction fees, but you have to hunt around a bit.
Once you get away from the border, not everyone will take US cash. Most often this seems to be because they don't have it on hand for making change, and figuring out the conversion is a pain for them. (Sometimes they'll offer to do straight cost and give change in Canadian, but this is generally not in your favor.) It's far simpler to just use Canadian cash and debit/credit.