Late model computerized vehicles require very good electrical supply. Significant corrosion on battery cables or terminals can cause can cause odd fault codes and other "ghost" computer signals. These will usually manifest as a check engine light along with misleading ODBC fault codes.
It is fairly common with these cars for the cable that goes between the positive battery terminal and the fusebox to corrode.