Since you've already checked the gas cap, it could be possible that it might do it. The EVAP system can detect a break in the system as small as a few millimeters, so if the gasket on the cap has a tear or wasn't seated properly, it could set it off.
If that isn't it, then I would check the vent solenoid. I forget where the vent solenoid is located. It's either in the engine compartment or housed near the gas tank. The solenoid (and valve) isn't too expensive, but it's just getting it replaced. Rockauto shows the solenoid and the valve at ~$16 each. I would also check the wiring to the solenoid. If it's frayed or damaged, it'll probably throw the code as well.